- Vrealmatic
- Unreal Engine Wiki
- Mass Framework
- SimulationLOD
SimulationLOD in Mass Framework
How does SimulationLOD work in Mass Framework? Mass Framework is a ECS for managing crowds and traffic in Unreal 5.0 and above.

SimulationLOD with MassGameplay built-in resources
SimulationLOD Trait
- Built-in
MassGameplay. - Trait located At
UE5/Engine/Plugins/Runtime/MassGameplay/Source/MassLOD. SimulationLODtrait shares the same Trait file withLODCollector.
Image
.hUCLASS(meta = (DisplayName = "SimulationLOD")) class MASSLOD_API UMassSimulationLODTrait : public UMassEntityTraitBase { GENERATED_BODY() UPROPERTY(Category = "Config", EditAnywhere) FMassSimulationLODParameters Params; UPROPERTY(Category = "Config", EditAnywhere) bool bEnableVariableTicking = false; UPROPERTY(Category = "Config", EditAnywhere, meta = (EditCondition = "bEnableVariableTicking", EditConditionHides)) FMassSimulationVariableTickParameters VariableTickParams; protected: virtual void BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const override; };.cppvoid UMassSimulationLODTrait::BuildTemplate(FMassEntityTemplateBuildContext& BuildContext, const UWorld& World) const { BuildContext.<mark>RequireFragment<FMassViewerInfoFragment></mark>(); BuildContext.<mark>RequireFragment<FTransformFragment></mark>(); FMassSimulationLODFragment& LODFragment = BuildContext.AddFragment_GetRef<FMassSimulationLODFragment>(); // Start all simulation LOD in the Off if(Params.bSetLODTags || bEnableVariableTicking) { LODFragment.LOD = EMassLOD::Off; BuildContext.AddTag<FMassOffLODTag>(); } FMassEntityManager& EntityManager = UE::Mass::Utils::GetEntityManagerChecked(World); FConstSharedStruct ParamsFragment = EntityManager.GetOrCreateConstSharedFragment(Params); BuildContext.<mark>AddConstSharedFragment(ParamsFragment)</mark>; uint32 ParamsHash = UE::StructUtils::GetStructCrc32(FConstStructView::Make(Params)); FSharedStruct SharedFragment = EntityManager.GetOrCreateSharedFragmentByHash<FMassSimulationLODSharedFragment>(ParamsHash, Params); BuildContext.<mark>AddSharedFragment(SharedFragment);</mark> // Variable ticking from simulation LOD if(bEnableVariableTicking) { BuildContext.AddFragment<FMassSimulationVariableTickFragment>(); BuildContext.AddChunkFragment<FMassSimulationVariableTickChunkFragment>(); FConstSharedStruct VariableTickParamsFragment = EntityManager.GetOrCreateConstSharedFragment(VariableTickParams); BuildContext.<mark>AddConstSharedFragment(VariableTickParamsFragment)</mark>; uint32 VariableTickParamsHash = UE::StructUtils::GetStructCrc32(FConstStructView::Make(VariableTickParams)); FSharedStruct VariableTickSharedFragment = EntityManager.GetOrCreateSharedFragmentByHash<FMassSimulationVariableTickSharedFragment>(VariableTickParamsHash, VariableTickParams); BuildContext.<mark>AddSharedFragment(VariableTickSharedFragment)</mark>; } }- Built-in


