Skip to content

Commit

Permalink
"Replace Previous Bake" will now remove all instances when the Foliag…
Browse files Browse the repository at this point in the history
…e Type is

specified for an instancer.
  • Loading branch information
andys-sidefx committed Mar 23, 2023
1 parent 1383dce commit 3efe185
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 0 deletions.
18 changes: 18 additions & 0 deletions Source/HoudiniEngine/Private/HoudiniFoliageTools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -226,3 +226,21 @@ FHoudiniFoliageTools::RemoveFoliageTypeFromWorld(UWorld* World, UFoliageType* Fo
}


void FHoudiniFoliageTools::RemoveInstancesFromWorld(UWorld* World, UFoliageType* FoliageType)
{
TArray<FFoliageInfo*> FoliageInfos = FHoudiniFoliageTools::GetAllFoliageInfo(World, FoliageType);
for (auto& FoliageInfo : FoliageInfos)
{
if (FoliageInfo != nullptr)
{
TArray<int> InstancesToRemove;
InstancesToRemove.SetNum(FoliageInfo->Instances.Num());
for(int Index = 0; Index < FoliageInfo->Instances.Num(); Index++)
{
InstancesToRemove[Index] = Index;
}
FoliageInfo->RemoveInstances(InstancesToRemove, true);
}
}
}

3 changes: 3 additions & 0 deletions Source/HoudiniEngine/Private/HoudiniFoliageTools.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,5 +69,8 @@ class HOUDINIENGINE_API FHoudiniFoliageTools
// Removed Foliage Type from world
static void RemoveFoliageTypeFromWorld(UWorld * World, UFoliageType * FoliageType);

// Remove all instances using this Foliage Type from the world
static void RemoveInstancesFromWorld(UWorld* World, UFoliageType* FoliageType);

};

4 changes: 4 additions & 0 deletions Source/HoudiniEngineEditor/Private/HoudiniEngineBakeUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,10 @@ FHoudiniEngineBakeUtils::BakeFoliageTypes(
Instance.BaseComponent = nullptr;
}

if (HoudiniAssetComponent->bReplacePreviousBake)
{
FHoudiniFoliageTools::RemoveInstancesFromWorld(DesiredWorld, TargetFoliageType);
}
FHoudiniFoliageTools::SpawnFoliageInstance(DesiredWorld, TargetFoliageType, Instances, true);

}
Expand Down

0 comments on commit 3efe185

Please sign in to comment.