Skip to content

Commit 669d990

Browse files
committed
Optimize derived classes while baking
Baking a level filter now takes 130us in average
1 parent bd1d038 commit 669d990

1 file changed

Lines changed: 10 additions & 16 deletions

File tree

Source/SaveExtension/Private/Misc/ClassFilter.cpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,48 +37,42 @@ void FSEClassFilter::BakeAllowedClasses() const
3737
return;
3838
}
3939

40-
TArray<UClass*> PotentiallyAllowedClasses;
40+
TArray<UClass*> ChildrenOfAllowedClasses;
4141
{
4242
TRACE_CPUPROFILER_EVENT_SCOPE(First Pass: Potential classes);
4343
for(auto& AllowedClass : AllowedClasses)
4444
{
4545
UClass* const AllowedClassPtr = AllowedClass.Get();
46+
4647
if(!AllowedClassPtr)
4748
{
4849
continue;
4950
}
50-
BakedAllowedClasses.Add(AllowedClassPtr);
5151

52-
for (TObjectIterator<UClass> It; It; ++It)
53-
{
54-
UClass* const Class = *It;
55-
if(Class->IsChildOf(AllowedClassPtr))
56-
{
57-
PotentiallyAllowedClasses.Add(Class);
58-
}
59-
}
52+
BakedAllowedClasses.Add(AllowedClassPtr);
53+
GetDerivedClasses(AllowedClassPtr, ChildrenOfAllowedClasses);
6054
}
6155
}
6256
{
6357
TRACE_CPUPROFILER_EVENT_SCOPE(Second Pass: Bake Classes);
64-
for (UClass* Class : PotentiallyAllowedClasses)
58+
for (UClass* Class : ChildrenOfAllowedClasses)
6559
{
6660
// Iterate parent classes of a class
67-
const UClass* CurrentClass = Class;
68-
while (CurrentClass)
61+
const UClass* ParentClass = Class;
62+
while (ParentClass)
6963
{
70-
if (AllowedClasses.Contains(CurrentClass))
64+
if (BakedAllowedClasses.Contains(ParentClass))
7165
{
7266
// First parent allowed class marks it as allowed
7367
BakedAllowedClasses.Add(Class);
7468
break;
7569
}
76-
else if (IgnoredClasses.Contains(CurrentClass))
70+
else if (IgnoredClasses.Contains(ParentClass))
7771
{
7872
// First parent ignored class marks it as not allowed
7973
break;
8074
}
81-
CurrentClass = CurrentClass->GetSuperClass();
75+
ParentClass = ParentClass->GetSuperClass();
8276
}
8377
}
8478
}

0 commit comments

Comments
 (0)