78 lines
2.4 KiB
C++
78 lines
2.4 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
|
|
#include "MassEntityTypes.h"
|
|
#endif // UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
|
|
#include "MassEntityHandle.h"
|
|
#include "MassExecutionContext.h"
|
|
#include "StateTreeExecutionContext.h"
|
|
#include "MassStateTreeExecutionContext.generated.h"
|
|
|
|
struct FMassExecutionContext;
|
|
struct FMassEntityManager;
|
|
class UMassSignalSubsystem;
|
|
struct FMassCommandBuffer;
|
|
|
|
USTRUCT()
|
|
struct FMassExecutionExtension : public FStateTreeExecutionExtension
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
virtual FString GetInstanceDescription(const FContextParameters& Context) const override;
|
|
virtual void OnLinkedStateTreeOverridesSet(const FContextParameters& Context, const FStateTreeReferenceOverrides& Overrides) override;
|
|
|
|
FMassEntityHandle Entity;
|
|
uint32 LinkedStateTreeOverridesHash = 0;
|
|
};
|
|
|
|
/**
|
|
* Extends FStateTreeExecutionContext to provide additional data to Evaluators and Tasks related to MassSimulation
|
|
*/
|
|
struct FMassStateTreeExecutionContext : public FStateTreeExecutionContext
|
|
{
|
|
MASSAIBEHAVIOR_API FMassStateTreeExecutionContext(UObject& InOwner
|
|
, const UStateTree& InStateTree
|
|
, FStateTreeInstanceData& InInstanceData
|
|
, FMassExecutionContext& InContext);
|
|
|
|
UE_DEPRECATED(5.6, "Use the other constructor that doesn't require MassEntityManager and MassSignalSubSystem")
|
|
FMassStateTreeExecutionContext(UObject& InOwner
|
|
, const UStateTree& InStateTree
|
|
, FStateTreeInstanceData& InInstanceData
|
|
, FMassEntityManager& InEntityManager
|
|
, UMassSignalSubsystem& InSignalSubsystem
|
|
, FMassExecutionContext& InContext)
|
|
: FMassStateTreeExecutionContext(InOwner, InStateTree, InInstanceData, InContext)
|
|
{
|
|
}
|
|
|
|
/** Start executing. */
|
|
MASSAIBEHAVIOR_API EStateTreeRunStatus Start();
|
|
MASSAIBEHAVIOR_API EStateTreeRunStatus Start(const FInstancedPropertyBag* InitialParameters, int32 RandomSeed = -1);
|
|
|
|
FMassEntityManager& GetEntityManager() const
|
|
{
|
|
return GetMassEntityExecutionContext().GetEntityManagerChecked();
|
|
}
|
|
|
|
FMassExecutionContext& GetMassEntityExecutionContext() const
|
|
{
|
|
return *MassEntityExecutionContext;
|
|
}
|
|
|
|
FMassEntityHandle GetEntity() const
|
|
{
|
|
return Entity;
|
|
}
|
|
|
|
MASSAIBEHAVIOR_API void SetEntity(const FMassEntityHandle InEntity);
|
|
|
|
protected:
|
|
MASSAIBEHAVIOR_API virtual void BeginDelayedTransition(const FStateTreeTransitionDelayedState& DelayedState) override;
|
|
FMassExecutionContext* MassEntityExecutionContext = nullptr;
|
|
FMassEntityHandle Entity;
|
|
};
|