46 lines
1.7 KiB
C++
46 lines
1.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "MassActors/Public/MassAgentTraits.h"
|
|
#include "MoverMassAgentTraits.generated.h"
|
|
|
|
struct FMassEntityTemplateBuildContext;
|
|
|
|
#define UE_API MOVERMASSINTEGRATION_API
|
|
|
|
/**
|
|
* The trait initializes the entity with a NavMoverComponent so Mover and Mass can communicate movement intent and velocity.
|
|
* This trait also sets up necessary translators for these systems based off of Mass sync direction.
|
|
* Note: This trait requires a NavMoverComponent and a MoverComponent to work properly
|
|
*/
|
|
UCLASS(MinimalAPI, BlueprintType, EditInlineNew, CollapseCategories, meta = (DisplayName = "Agent Mover Sync"))
|
|
class UMoverMassAgentTrait : public UMassAgentSyncTrait
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
protected:
|
|
UE_API virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const override;
|
|
|
|
/**
|
|
* Whether this trait should sync the transform of actor<->entity (based on translation direction)
|
|
* TODO: Currently Mover doesn't like outside modification of rotation and may throw a warning if Mover's transform gets set from the entity. It may also cause a rollback.
|
|
*/
|
|
UPROPERTY(EditAnywhere, Category = Mass)
|
|
bool bSyncTransform = false;
|
|
};
|
|
|
|
/**
|
|
* This trait sets up required translators for orientation syncing between Mover and Mass based off of Mass sync direction
|
|
*/
|
|
UCLASS(MinimalAPI, BlueprintType, EditInlineNew, CollapseCategories, meta = (DisplayName = "Agent Mover Orientation Sync"))
|
|
class UMoverMassAgentOrientationSyncTrait : public UMassAgentSyncTrait
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
protected:
|
|
UE_API virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const override;
|
|
};
|
|
|
|
#undef UE_API
|