You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- Added assert that the provided world is not a game world in IWorldPartitionActorLoaderInterface::ILoaderAdapter constructor. - Apply the ALocationVolume.DebugColor to the World Partition display for loader adapters UI. #rb richard.malo #preflight 6283e231ed2c0847b04fd00b #rnx [CL 20247563 by JeanFrancois Dube in ue5-main branch]
70 lines
2.0 KiB
C++
70 lines
2.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "ProceduralFoliageVolume.h"
|
|
#include "Components/BrushComponent.h"
|
|
#include "ProceduralFoliageComponent.h"
|
|
#include "ProceduralFoliageSpawner.h"
|
|
#include "WorldPartition/LoaderAdapter/LoaderAdapterActor.h"
|
|
|
|
AProceduralFoliageVolume::AProceduralFoliageVolume(const FObjectInitializer& ObjectInitializer)
|
|
: Super(ObjectInitializer)
|
|
{
|
|
ProceduralComponent = ObjectInitializer.CreateDefaultSubobject<UProceduralFoliageComponent>(this, TEXT("ProceduralFoliageComponent"));
|
|
ProceduralComponent->SetSpawningVolume(this);
|
|
|
|
if (UBrushComponent* MyBrushComponent = GetBrushComponent())
|
|
{
|
|
MyBrushComponent->SetCollisionObjectType(ECC_WorldStatic);
|
|
MyBrushComponent->SetCollisionResponseToAllChannels(ECR_Ignore);
|
|
|
|
// This is important because the volume overlaps with all procedural foliage
|
|
// That means during streaming we'll get a huge hitch for UpdateOverlaps
|
|
MyBrushComponent->SetGenerateOverlapEvents(false);
|
|
}
|
|
}
|
|
|
|
#if WITH_EDITOR
|
|
void AProceduralFoliageVolume::PostRegisterAllComponents()
|
|
{
|
|
Super::PostRegisterAllComponents();
|
|
|
|
if (!GetWorld()->IsGameWorld() && GetWorld()->IsPartitionedWorld() && !WorldPartitionActorLoader)
|
|
{
|
|
WorldPartitionActorLoader = new FLoaderAdapterActor(this);
|
|
}
|
|
}
|
|
|
|
void AProceduralFoliageVolume::BeginDestroy()
|
|
{
|
|
if (WorldPartitionActorLoader)
|
|
{
|
|
delete WorldPartitionActorLoader;
|
|
WorldPartitionActorLoader = nullptr;
|
|
}
|
|
|
|
Super::BeginDestroy();
|
|
}
|
|
|
|
IWorldPartitionActorLoaderInterface::ILoaderAdapter* AProceduralFoliageVolume::GetLoaderAdapter()
|
|
{
|
|
return WorldPartitionActorLoader;
|
|
}
|
|
|
|
void AProceduralFoliageVolume::PostEditImport()
|
|
{
|
|
// Make sure that this is the component's spawning volume
|
|
ProceduralComponent->SetSpawningVolume(this);
|
|
}
|
|
|
|
bool AProceduralFoliageVolume::GetReferencedContentObjects(TArray<UObject*>& Objects) const
|
|
{
|
|
Super::GetReferencedContentObjects(Objects);
|
|
|
|
if (ProceduralComponent && ProceduralComponent->FoliageSpawner)
|
|
{
|
|
Objects.Add(ProceduralComponent->FoliageSpawner);
|
|
}
|
|
return true;
|
|
}
|
|
#endif
|