Skip to content

Commit 18551a8

Browse files
committed
- Added Profiling macros to the plugin's code base to help optimize its performance with
HDAs that have a lot of nodes/parameters.
1 parent 8d80bdd commit 18551a8

19 files changed

+141
-14
lines changed

Source/HoudiniEngine/Private/HoudiniAnimationTranslator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,8 @@ FHoudiniAnimationTranslator::GetFbxCustomAttributes(
380380
//Creates SkelatalMesh and Skeleton Assets and Packages, and adds them to OutputObjects
381381
bool FHoudiniAnimationTranslator::CreateAnimationFromMotionClip(UHoudiniOutput* InOutput, const TArray<FHoudiniGeoPartObject>& HGPOs, const FHoudiniPackageParams& InPackageParams, UObject* InOuterComponent)
382382
{
383+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniAnimationTranslator::CreateAnimationFromMotionClip);
384+
383385
if (HGPOs.Num() == 0)
384386
{
385387
HOUDINI_LOG_WARNING(TEXT("Could not translate MotionClip. No Geo Part Objects."));

Source/HoudiniEngine/Private/HoudiniDataTableTranslator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,8 @@ FHoudiniDataTableTranslator::BuildDataTable(
402402
UHoudiniOutput* CurOutput,
403403
FHoudiniPackageParams& PackageParams)
404404
{
405+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniDataTableTranslator::BuildDataTable);
406+
405407
DeletePreviousOutput(CurOutput);
406408

407409
int32 GeoId = HGPO.GeoId;

Source/HoudiniEngine/Private/HoudiniEngineManager.cpp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,8 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
503503
{
504504
case EHoudiniAssetState::NeedInstantiation:
505505
{
506+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-NeedInstantiation);
507+
506508
// Do nothing unless the HAC has been updated
507509
if (HAC->NeedUpdate())
508510
{
@@ -525,6 +527,8 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
525527

526528
case EHoudiniAssetState::NewHDA:
527529
{
530+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-NewHDA);
531+
528532
// Update parameters. Since there is no instantiated node yet, this will only fetch the defaults from
529533
// the asset definition.
530534
FHoudiniParameterTranslator::UpdateParameters(HAC);
@@ -538,6 +542,8 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
538542

539543
case EHoudiniAssetState::PreInstantiation:
540544
{
545+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-PreInstantiation);
546+
541547
// Only proceed forward if we don't need to wait for our input HoudiniAssets to finish cooking/instantiating
542548
if (HAC->NeedsToWaitForInputHoudiniAssets())
543549
break;
@@ -603,7 +609,8 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
603609
}
604610

605611
case EHoudiniAssetState::Instantiating:
606-
{
612+
{
613+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-Instantiating);
607614
EHoudiniAssetState NewState = EHoudiniAssetState::Instantiating;
608615
if (UpdateInstantiating(HAC, NewState))
609616
{
@@ -620,6 +627,7 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
620627

621628
case EHoudiniAssetState::PreCook:
622629
{
630+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-PreCook);
623631
// Only proceed forward if we don't need to wait for our input
624632
// HoudiniAssets to finish cooking/instantiating
625633
if (HAC->NeedsToWaitForInputHoudiniAssets())
@@ -670,6 +678,7 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
670678

671679
case EHoudiniAssetState::Cooking:
672680
{
681+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-Cooking);
673682
EHoudiniAssetState NewState = EHoudiniAssetState::Cooking;
674683
bool state = UpdateCooking(HAC, NewState);
675684
if (state)
@@ -687,6 +696,7 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
687696

688697
case EHoudiniAssetState::PostCook:
689698
{
699+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-PostCook);
690700
// Handle PostCook
691701
EHoudiniAssetState NewState = EHoudiniAssetState::None;
692702
bool bSuccess = HAC->bLastCookSuccess;
@@ -709,12 +719,15 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
709719

710720
case EHoudiniAssetState::PreProcess:
711721
{
722+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-PreProcess);
712723
StartTaskAssetProcess(HAC);
713724
break;
714725
}
715726

716727
case EHoudiniAssetState::Processing:
717728
{
729+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-Processing);
730+
718731
UpdateProcess(HAC);
719732

720733
HAC->HandleOnPostOutputProcessing();
@@ -725,6 +738,8 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
725738

726739
case EHoudiniAssetState::None:
727740
{
741+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-None);
742+
728743
// Update world inputs if we have any
729744
FHoudiniInputTranslator::UpdateWorldInputs(HAC);
730745

@@ -794,6 +809,7 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
794809

795810
case EHoudiniAssetState::NeedRebuild:
796811
{
812+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-NeedRebuild);
797813
if (!bIsNodeSyncComponent)
798814
{
799815
// Do not delete nodes for NodeSync components!
@@ -806,6 +822,7 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
806822

807823
case EHoudiniAssetState::NeedDelete:
808824
{
825+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-NeedDelete);
809826
if (!bIsNodeSyncComponent)
810827
{
811828
// Do not delete nodes for NodeSync components!
@@ -821,6 +838,7 @@ FHoudiniEngineManager::ProcessComponent(UHoudiniAssetComponent* HAC)
821838

822839
case EHoudiniAssetState::Deleting:
823840
{
841+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineManager::ProcessComponent-Deleting);
824842
break;
825843
}
826844
}
@@ -854,7 +872,7 @@ FHoudiniEngineManager::StartTaskAssetInstantiation(UHoudiniAsset* HoudiniAsset,
854872
}
855873

856874
// Handle hda files that contain multiple assets
857-
TArray< HAPI_StringHandle > AssetNames;
875+
TArray<HAPI_StringHandle> AssetNames;
858876
if (!FHoudiniEngineUtils::GetSubAssetNames(AssetLibraryId, AssetNames))
859877
{
860878
HOUDINI_LOG_ERROR(TEXT("Cancelling asset instantiation - unable to retrieve asset names."));

Source/HoudiniEngine/Private/HoudiniEngineString.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ FHoudiniEngineString::HasValidId() const
8282
bool
8383
FHoudiniEngineString::ToStdString(std::string& String, const HAPI_Session* InSession) const
8484
{
85+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineString::ToStdString);
86+
8587
String = "";
8688

8789
// Null string ID / zero should be considered invalid

Source/HoudiniEngine/Private/HoudiniEngineUtils.cpp

Lines changed: 58 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,8 @@ FHoudiniEngineUtils::GatherLandscapeInputs(
12291229
UHoudiniAssetComponent* HAC,
12301230
TArray<ALandscapeProxy*>& AllInputLandscapes)
12311231
{
1232+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherLandscapeInputs);
1233+
12321234
if (!IsValid(HAC))
12331235
return;
12341236

@@ -1528,6 +1530,7 @@ FHoudiniEngineUtils::LoadLibHAPI(FString & StoredLibHAPILocation)
15281530
bool
15291531
FHoudiniEngineUtils::IsInitialized()
15301532
{
1533+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::IsInitialized);
15311534
if (!FHoudiniApi::IsHAPIInitialized())
15321535
return false;
15331536

@@ -1706,6 +1709,8 @@ FHoudiniEngineUtils::LoadHoudiniAsset(const UHoudiniAsset * HoudiniAsset, HAPI_A
17061709
// Lambda to detect license issues
17071710
auto CheckLicenseValid = [&AssetFileName](const HAPI_Result& Result)
17081711
{
1712+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::LoadHoudiniAsset - CheckLicenseValid);
1713+
17091714
// HoudiniEngine acquires a license when creating/loading a node, not when creating a session
17101715
if (Result >= HAPI_RESULT_NO_LICENSE_FOUND && Result < HAPI_RESULT_ASSET_INVALID)
17111716
{
@@ -1730,6 +1735,8 @@ FHoudiniEngineUtils::LoadHoudiniAsset(const UHoudiniAsset * HoudiniAsset, HAPI_A
17301735
// Lambda to load an HDA from file
17311736
auto LoadAssetFromFile = [&Result, &OutAssetLibraryId](const FString& InAssetFileName)
17321737
{
1738+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::LoadHoudiniAsset - LoadAssetFromFile);
1739+
17331740
// Load the asset from file.
17341741
std::string AssetFileNamePlain;
17351742
FHoudiniEngineUtils::ConvertUnrealString(InAssetFileName, AssetFileNamePlain);
@@ -1741,6 +1748,8 @@ FHoudiniEngineUtils::LoadHoudiniAsset(const UHoudiniAsset * HoudiniAsset, HAPI_A
17411748
// Lambda to load an HDA from memory
17421749
auto LoadAssetFromMemory = [&Result, &OutAssetLibraryId](const UHoudiniAsset* InHoudiniAsset)
17431750
{
1751+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::LoadHoudiniAsset - LoadAssetFromMemory);
1752+
17441753
// Load the asset from the cached memory buffer
17451754
Result = FHoudiniApi::LoadAssetLibraryFromMemory(
17461755
FHoudiniEngine::Get().GetSession(),
@@ -1833,6 +1842,8 @@ FHoudiniEngineUtils::GetSubAssetNames(
18331842
const HAPI_AssetLibraryId& AssetLibraryId,
18341843
TArray< HAPI_StringHandle >& OutAssetNames)
18351844
{
1845+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GetSubAssetNames);
1846+
18361847
if (AssetLibraryId < 0)
18371848
return false;
18381849

@@ -1940,6 +1951,8 @@ FHoudiniEngineUtils::IsValidNodeId(HAPI_NodeId NodeId)
19401951
bool
19411952
FHoudiniEngineUtils::GetHoudiniAssetName(const HAPI_NodeId& AssetNodeId, FString& NameString)
19421953
{
1954+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GetHoudiniAssetName);
1955+
19431956
if (AssetNodeId < 0)
19441957
return false;
19451958

@@ -2018,6 +2031,8 @@ FHoudiniEngineUtils::HapiGetAbsNodePath(const HAPI_NodeId& InNodeId, FString& Ou
20182031
bool
20192032
FHoudiniEngineUtils::HapiGetNodePath(const HAPI_NodeId& InNodeId, const HAPI_NodeId& InRelativeToNodeId, FString& OutPath)
20202033
{
2034+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::HapiGetNodePath);
2035+
20212036
// Retrieve Path to the given Node, relative to the other given Node
20222037
if ((InNodeId < 0) || (InRelativeToNodeId < 0))
20232038
return false;
@@ -2100,6 +2115,8 @@ FHoudiniEngineUtils::HapiGetNodePath(const FHoudiniGeoPartObject& InHGPO, FStrin
21002115
bool
21012116
FHoudiniEngineUtils::HapiGetObjectInfos(const HAPI_NodeId& InNodeId, TArray<HAPI_ObjectInfo>& OutObjectInfos, TArray<HAPI_Transform>& OutObjectTransforms)
21022117
{
2118+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::HapiGetObjectInfos);
2119+
21032120
HAPI_NodeInfo NodeInfo;
21042121
FHoudiniApi::NodeInfo_Init(&NodeInfo);
21052122
HOUDINI_CHECK_ERROR_RETURN(FHoudiniApi::GetNodeInfo(
@@ -2211,6 +2228,8 @@ FHoudiniEngineUtils::HapiGetObjectInfos(const HAPI_NodeId& InNodeId, TArray<HAPI
22112228
bool
22122229
FHoudiniEngineUtils::IsObjNodeFullyVisible(const TSet<HAPI_NodeId>& AllObjectIds, const HAPI_NodeId& InRootNodeId, const HAPI_NodeId& InChildNodeId)
22132230
{
2231+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::IsObjNodeFullyVisible);
2232+
22142233
// Walk up the hierarchy from child to root.
22152234
// If any node in that hierarchy is not in the "AllObjectIds" set, the OBJ node is considered to
22162235
// be hidden.
@@ -2289,6 +2308,7 @@ FHoudiniEngineUtils::IsSopNode(const HAPI_NodeId& NodeId)
22892308

22902309
bool FHoudiniEngineUtils::ContainsSopNodes(const HAPI_NodeId& NodeId)
22912310
{
2311+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::ContainsSopNodes);
22922312
int ChildCount = 0;
22932313
HOUDINI_CHECK_ERROR_RETURN(
22942314
FHoudiniApi::ComposeChildNodeList(
@@ -2339,15 +2359,23 @@ FHoudiniEngineUtils::GatherAllAssetOutputs(
23392359

23402360
// Get the AssetInfo
23412361
HAPI_AssetInfo AssetInfo;
2342-
FHoudiniApi::AssetInfo_Init(&AssetInfo);
2343-
bool bAssetInfoResult = HAPI_RESULT_SUCCESS == FHoudiniApi::GetAssetInfo(
2344-
FHoudiniEngine::Get().GetSession(), AssetId, &AssetInfo);
2362+
bool bAssetInfoResult = false;
2363+
{
2364+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherAllAssetOutputs-GetAssetInfo);
2365+
FHoudiniApi::AssetInfo_Init(&AssetInfo);
2366+
bAssetInfoResult = HAPI_RESULT_SUCCESS == FHoudiniApi::GetAssetInfo(
2367+
FHoudiniEngine::Get().GetSession(), AssetId, &AssetInfo);
2368+
}
23452369

23462370
// Get the Asset NodeInfo
23472371
HAPI_NodeInfo AssetNodeInfo;
2348-
FHoudiniApi::NodeInfo_Init(&AssetNodeInfo);
2349-
HAPI_Result NodeResult = FHoudiniApi::GetNodeInfo(
2350-
FHoudiniEngine::Get().GetSession(), AssetId, &AssetNodeInfo);
2372+
HAPI_Result NodeResult = HAPI_RESULT_FAILURE;
2373+
{
2374+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherAllAssetOutputs-GetNodeInfo);
2375+
FHoudiniApi::NodeInfo_Init(&AssetNodeInfo);
2376+
NodeResult = FHoudiniApi::GetNodeInfo(
2377+
FHoudiniEngine::Get().GetSession(), AssetId, &AssetNodeInfo);
2378+
}
23512379

23522380
if (HAPI_RESULT_SUCCESS != NodeResult)
23532381
{
@@ -2379,6 +2407,7 @@ FHoudiniEngineUtils::GatherAllAssetOutputs(
23792407
int32 EditableNodeCount = 0;
23802408
if (bAssetHasChildren)
23812409
{
2410+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherAllAssetOutputs-ComposeChildNodeList);
23822411
HOUDINI_CHECK_ERROR(FHoudiniApi::ComposeChildNodeList(
23832412
FHoudiniEngine::Get().GetSession(),
23842413
AssetId, HAPI_NODETYPE_SOP, HAPI_NODEFLAGS_EDITABLE,
@@ -2389,6 +2418,7 @@ FHoudiniEngineUtils::GatherAllAssetOutputs(
23892418
// of whether the subnet is considered visible or not.
23902419
if (EditableNodeCount > 0)
23912420
{
2421+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherAllAssetOutputs-GetComposedChildNodeList);
23922422
TArray<HAPI_NodeId> EditableNodeIds;
23932423
EditableNodeIds.SetNumUninitialized(EditableNodeCount);
23942424
HOUDINI_CHECK_ERROR(FHoudiniApi::GetComposedChildNodeList(
@@ -2397,6 +2427,7 @@ FHoudiniEngineUtils::GatherAllAssetOutputs(
23972427

23982428
for (int32 nEditable = 0; nEditable < EditableNodeCount; nEditable++)
23992429
{
2430+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherAllAssetOutputs-GetEditableGeoInfo);
24002431
HAPI_GeoInfo CurrentEditableGeoInfo;
24012432
FHoudiniApi::GeoInfo_Init(&CurrentEditableGeoInfo);
24022433
HOUDINI_CHECK_ERROR(FHoudiniApi::GetGeoInfo(
@@ -2451,6 +2482,7 @@ FHoudiniEngineUtils::GatherAllAssetOutputs(
24512482
TSet<HAPI_NodeId> AllObjectIds;
24522483
if (bUseOutputFromSubnets)
24532484
{
2485+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherAllAssetOutputs-GetComposedChildNodeList2);
24542486
int NumObjSubnets;
24552487
TArray<HAPI_NodeId> ObjectIds;
24562488
HOUDINI_CHECK_ERROR_RETURN(
@@ -2464,6 +2496,7 @@ FHoudiniEngineUtils::GatherAllAssetOutputs(
24642496
),
24652497
false);
24662498

2499+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherAllAssetOutputs-GetComposedChildNodeList2);
24672500
ObjectIds.SetNumUninitialized(NumObjSubnets);
24682501
HOUDINI_CHECK_ERROR_RETURN(
24692502
FHoudiniApi::GetComposedChildNodeList(
@@ -2556,6 +2589,8 @@ bool FHoudiniEngineUtils::GatherImmediateOutputGeoInfos(const HAPI_NodeId& InNod
25562589
TSet<HAPI_NodeId>& OutForceNodesCook
25572590
)
25582591
{
2592+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GatherImmediateOutputGeoInfos);
2593+
25592594
TSet<HAPI_NodeId> GatheredNodeIds;
25602595

25612596
// NOTE: This function assumes that the incoming node is a Geometry container that contains immediate
@@ -2856,8 +2891,8 @@ FHoudiniEngineUtils::TranslateUnrealTransform(const FTransform& UnrealTransform,
28562891

28572892
void
28582893
FHoudiniEngineUtils::TranslateUnrealTransform(
2859-
const FTransform & UnrealTransform,
2860-
HAPI_TransformEuler & HapiTransformEuler)
2894+
const FTransform& UnrealTransform,
2895+
HAPI_TransformEuler& HapiTransformEuler)
28612896
{
28622897
FHoudiniApi::TransformEuler_Init(&HapiTransformEuler);
28632898

@@ -3014,6 +3049,7 @@ FHoudiniEngineUtils::UploadHACTransform(UHoudiniAssetComponent* HAC)
30143049
bool
30153050
FHoudiniEngineUtils::HapiSetAssetTransform(const HAPI_NodeId& AssetId, const FTransform & Transform)
30163051
{
3052+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::HapiSetAssetTransform);
30173053
if (AssetId < 0)
30183054
return false;
30193055

@@ -3066,6 +3102,8 @@ FHoudiniEngineUtils::HapiGetParentNodeId(const HAPI_NodeId& NodeId)
30663102
void
30673103
FHoudiniEngineUtils::AssignUniqueActorLabelIfNeeded(UHoudiniAssetComponent* HAC)
30683104
{
3105+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::AssignUniqueActorLabelIfNeeded);
3106+
30693107
if (!IsValid(HAC))
30703108
return;
30713109

@@ -6132,12 +6170,18 @@ FHoudiniEngineUtils::GetGenericAttributeList(
61326170

61336171

61346172
bool
6135-
FHoudiniEngineUtils::GetGenericPropertiesAttributes(const HAPI_NodeId& InGeoNodeId, const HAPI_PartId& InPartId,
6136-
const bool InbFindDetailAttributes, const int32& InFirstValidPrimIndex, const int32& InFirstValidVertexIndex, const int32& InFirstValidPointIndex,
6173+
FHoudiniEngineUtils::GetGenericPropertiesAttributes(
6174+
const HAPI_NodeId& InGeoNodeId,
6175+
const HAPI_PartId& InPartId,
6176+
const bool InbFindDetailAttributes,
6177+
const int32& InFirstValidPrimIndex,
6178+
const int32& InFirstValidVertexIndex,
6179+
const int32& InFirstValidPointIndex,
61376180
TArray<FHoudiniGenericAttribute>& OutPropertyAttributes)
61386181
{
6139-
int32 FoundCount = 0;
6182+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::GetGenericPropertiesAttributes);
61406183

6184+
int32 FoundCount = 0;
61416185
// List all the generic property detail attributes ...
61426186
if (InbFindDetailAttributes)
61436187
{
@@ -6177,6 +6221,7 @@ FHoudiniEngineUtils::UpdateGenericPropertiesAttributes(
61776221
const bool bInDeferPostEditChangePropertyCalls,
61786222
const FHoudiniGenericAttribute::FFindPropertyFunctionType& InProcessFunction)
61796223
{
6224+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::UpdateGenericPropertiesAttributes);
61806225
if (!IsValid(InObject))
61816226
return false;
61826227

@@ -6942,6 +6987,8 @@ FHoudiniEngineUtils::CreateNode(
69426987
int32
69436988
FHoudiniEngineUtils::HapiGetCookCount(const HAPI_NodeId& InNodeId)
69446989
{
6990+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniEngineUtils::HapiGetCookCount);
6991+
69456992
// To reduce the "cost" of the call on big HDAs - limit or search to non bypassed SOP/OBJ nodes
69466993
int32 CookCount = -1;
69476994
if (HAPI_RESULT_FAILURE == FHoudiniApi::GetTotalCookCount(

Source/HoudiniEngine/Private/HoudiniGeometryCollectionTranslator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ FHoudiniGeometryCollectionTranslator::SetupGeometryCollectionComponentFromOutput
3030
const FHoudiniPackageParams& InPackageParams,
3131
UWorld * InWorld)
3232
{
33+
TRACE_CPUPROFILER_EVENT_SCOPE(FHoudiniGeometryCollectionTranslator::SetupGeometryCollectionComponentFromOutputs);
34+
3335
USceneComponent* ParentComponent = Cast<USceneComponent>(InOuterComponent);
3436
if (!ParentComponent)
3537
return;

0 commit comments

Comments
 (0)