2014-12-07 19:09:38 -05:00
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
# include "ClassViewerPrivatePCH.h"
# include "UnloadedBlueprintData.h"
# include "ClassViewerNode.h"
2014-11-12 04:58:53 -05:00
# include "Engine/BlueprintGeneratedClass.h"
2014-03-14 14:13:41 -04:00
FUnloadedBlueprintData : : FUnloadedBlueprintData ( TWeakPtr < FClassViewerNode > InClassViewerNode )
{
ClassViewerNode = InClassViewerNode ;
ClassFlags = CLASS_None ;
}
bool FUnloadedBlueprintData : : HasAnyClassFlags ( uint32 InFlagsToCheck ) const
{
return ( ClassFlags & InFlagsToCheck ) ! = 0 ;
}
bool FUnloadedBlueprintData : : HasAllClassFlags ( uint32 InFlagsToCheck ) const
{
return ( ( ClassFlags & InFlagsToCheck ) = = InFlagsToCheck ) ;
}
void FUnloadedBlueprintData : : SetClassFlags ( uint32 InFlags )
{
ClassFlags = InFlags ;
}
bool FUnloadedBlueprintData : : IsChildOf ( const UClass * InClass ) const
{
TSharedPtr < FClassViewerNode > CurrentNode = ClassViewerNode . Pin ( ) - > ParentNode . Pin ( ) ;
// Keep going through parents till you find an invalid.
while ( CurrentNode . IsValid ( ) )
{
if ( * CurrentNode - > GetClassName ( ) = = InClass - > GetName ( ) )
{
return true ;
}
CurrentNode = CurrentNode - > ParentNode . Pin ( ) ;
}
return false ;
}
bool FUnloadedBlueprintData : : ImplementsInterface ( const UClass * InInterface ) const
{
for ( int InterfaceIdx = 0 ; InterfaceIdx < ImplementedInterfaces . Num ( ) ; + + InterfaceIdx )
{
if ( ImplementedInterfaces [ InterfaceIdx ] = = InInterface - > GetName ( ) )
{
return true ;
}
}
return false ;
}
bool FUnloadedBlueprintData : : IsA ( const UClass * InClass ) const
{
// Unloaded blueprints will always return true for IsA(UBlueprintGeneratedClass::StaticClass). With that in mind, even though we do not have the exact class, we can use that knowledge as a basis for a check.
return ( ( UObject * ) UBlueprintGeneratedClass : : StaticClass ( ) ) - > IsA ( InClass ) ;
}
const TWeakPtr < class FClassViewerNode > FUnloadedBlueprintData : : GetClassViewerNode ( ) const
{
return ClassViewerNode ;
}
void FUnloadedBlueprintData : : AddImplementedInterfaces ( FString & InterfaceName )
{
ImplementedInterfaces . Add ( InterfaceName ) ;
}