Files
UnrealEngine/Engine/Plugins/Runtime/MassGameplay/Source/MassRepresentation/Public/MassVisualizationLODProcessor.h
2025-05-18 13:04:45 +08:00

64 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "MassRepresentationFragments.h"
#include "MassProcessor.h"
#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
#include "MassCommonFragments.h"
#include "MassLODCalculator.h"
#endif // UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
#include "MassVisualizationLODProcessor.generated.h"
/**
* Tag required by Visualization LOD Processor to update LOD information. Removing the tag allows to support temporary
* disabling of processing for individual entities.
*/
USTRUCT()
struct FMassVisualizationLODProcessorTag : public FMassTag
{
GENERATED_BODY();
};
UCLASS(MinimalAPI)
class UMassVisualizationLODProcessor : public UMassProcessor
{
GENERATED_BODY()
public:
MASSREPRESENTATION_API UMassVisualizationLODProcessor();
protected:
/** Configure the owned FMassEntityQuery instances to express processor's requirements */
MASSREPRESENTATION_API virtual void ConfigureQueries(const TSharedRef<FMassEntityManager>& EntityManager) override;
/**
* Execution method for this processor
* @param EntitySubsystem is the system to execute the lambdas on each entity chunk
* @param Context is the execution context to be passed when executing the lambdas
*/
MASSREPRESENTATION_API virtual void Execute(FMassEntityManager& EntityManager, FMassExecutionContext& Context) override;
/**
* Forces Off LOD on all calculation
* @param bForce to whether force or not Off LOD
*/
void ForceOffLOD(bool bForce) { bForceOFFLOD = bForce; }
protected:
FMassEntityQuery CloseEntityQuery;
FMassEntityQuery CloseEntityAdjustDistanceQuery;
FMassEntityQuery FarEntityQuery;
FMassEntityQuery DebugEntityQuery;
bool bForceOFFLOD = false;
UPROPERTY(Transient)
TObjectPtr<const UScriptStruct> FilterTag = nullptr;
UPROPERTY(config, EditDefaultsOnly, Category = "Mass")
bool bDoAdjustmentFromCount = true;
};