Files
UnrealEngineUWP/Engine/Source/Runtime/Landscape/Private/LandscapeComponent.cpp
dominic couture 0434847b6f -Make Landscape use LightMapType setting
-Added a new type of mappping, FLandscapeStaticLightingGlobalVolumeMapping (akin to FStaticLightingGlobalVolumeMapping) that makes Lightmass use the exported Landscape mesh as a surface for caching but then discards the lightmaps

#rb jonathan.bard
#jira UE-194661

[CL 31818485 by dominic couture in ue5-main branch]
2024-02-26 17:04:01 -05:00

92 lines
2.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "LandscapeComponent.h"
#include "LandscapeLayerInfoObject.h"
#include "Materials/MaterialInstance.h"
#include "LandscapeEdit.h"
#include "LandscapeRender.h"
#if WITH_EDITOR
#include "LandscapeHLODBuilder.h"
uint32 ULandscapeComponent::UndoRedoModifiedComponentCount;
TArray<ULandscapeComponent*> ULandscapeComponent::UndoRedoModifiedComponents;
#endif
FName FWeightmapLayerAllocationInfo::GetLayerName() const
{
if (LayerInfo)
{
return LayerInfo->LayerName;
}
return NAME_None;
}
uint32 FWeightmapLayerAllocationInfo::GetHash() const
{
uint32 Hash = PointerHash(LayerInfo);
Hash = HashCombine(GetTypeHash(WeightmapTextureIndex), Hash);
Hash = HashCombine(GetTypeHash(WeightmapTextureChannel), Hash);
return Hash;
}
ELightMapInteractionType ULandscapeComponent::GetStaticLightingType() const
{
if (GetLightmapType() == ELightmapType::ForceVolumetric)
return LMIT_GlobalVolume;
return LMIT_Texture;
}
#if WITH_EDITOR
void FLandscapeEditToolRenderData::UpdateDebugColorMaterial(const ULandscapeComponent* const Component)
{
Component->GetLayerDebugColorKey(DebugChannelR, DebugChannelG, DebugChannelB);
}
void FLandscapeEditToolRenderData::UpdateSelectionMaterial(int32 InSelectedType, const ULandscapeComponent* const Component)
{
// Check selection
if (SelectedType != InSelectedType && (SelectedType & ST_REGION) && !(InSelectedType & ST_REGION))
{
// Clear Select textures...
if (DataTexture)
{
FLandscapeEditDataInterface LandscapeEdit(Component->GetLandscapeInfo());
LandscapeEdit.ZeroTexture(DataTexture);
}
}
SelectedType = InSelectedType;
}
void ULandscapeComponent::UpdateEditToolRenderData()
{
FLandscapeComponentSceneProxy* LandscapeSceneProxy = (FLandscapeComponentSceneProxy*)SceneProxy;
if (LandscapeSceneProxy != nullptr)
{
TArray<UMaterialInterface*> UsedMaterialsForVerification;
const bool bGetDebugMaterials = true;
GetUsedMaterials(UsedMaterialsForVerification, bGetDebugMaterials);
FLandscapeEditToolRenderData LandscapeEditToolRenderData = EditToolRenderData;
ENQUEUE_RENDER_COMMAND(UpdateEditToolRenderData)(
[LandscapeEditToolRenderData, LandscapeSceneProxy, UsedMaterialsForVerification](FRHICommandListImmediate& RHICmdList)
{
LandscapeSceneProxy->EditToolRenderData = LandscapeEditToolRenderData;
LandscapeSceneProxy->SetUsedMaterialForVerification(UsedMaterialsForVerification);
});
}
}
TSubclassOf<UHLODBuilder> ULandscapeComponent::GetCustomHLODBuilderClass() const
{
return ULandscapeHLODBuilder::StaticClass();
}
#endif