// 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& 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 FilterTag = nullptr; UPROPERTY(config, EditDefaultsOnly, Category = "Mass") bool bDoAdjustmentFromCount = true; };