bool FFrontendFilter_GameplayTags::PassesFilter(FAssetFilterType InItem) const { if (InItem.IsAssetLoaded()) { if (UObject* Object = InItem.GetAsset()) { if (UBlueprint* Blueprint = Cast<UBlueprint>(Object)) { return ProcessStruct(Blueprint->GeneratedClass->GetDefaultObject(), Blueprint->GeneratedClass); //@TODO: Check blueprint bytecode! } else if (UClass* Class = Cast<UClass>(Object)) { return ProcessStruct(Class->GetDefaultObject(), Class); } else { return ProcessStruct(Object, Object->GetClass()); } } } return false; }
bool FFrontendFilter_InUseByLoadedLevels::PassesFilter(FAssetFilterType InItem) const { bool bObjectInUse = false; if ( InItem.IsAssetLoaded() ) { UObject* Asset = InItem.GetAsset(); const bool bUnreferenced = !Asset->HasAnyMarks( OBJECTMARK_TagExp ); const bool bIndirectlyReferencedObject = Asset->HasAnyMarks( OBJECTMARK_TagImp ); const bool bRejectObject = Asset->GetOuter() == NULL || // Skip objects with null outers Asset->HasAnyFlags( RF_Transient ) || // Skip transient objects (these shouldn't show up in the CB anyway) Asset->IsPendingKill() || // Objects that will be garbage collected bUnreferenced || // Unreferenced objects bIndirectlyReferencedObject; // Indirectly referenced objects if( !bRejectObject && Asset->HasAnyFlags( RF_Public ) ) { // The object is in use bObjectInUse = true; } } return bObjectInUse; }