@@ -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