2016-01-07 08:17:16 -05:00
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
2014-04-29 06:45:18 -04:00
# include "ScriptEditorPluginPrivatePCH.h"
2014-07-03 03:22:03 -04:00
# include "ScriptBlueprintCompiler.h"
# include "KismetCompilerModule.h"
2014-07-03 04:42:27 -04:00
# include "ScriptBlueprintEditor.h"
2014-04-29 06:45:18 -04:00
DEFINE_LOG_CATEGORY ( LogScriptEditorPlugin ) ;
2014-07-03 03:22:03 -04:00
/**
* Script blueprint editor actions
*/
class FAssetTypeActions_ScriptClass : public FAssetTypeActions_Base
{
public :
// IAssetTypeActions Implementation
virtual FText GetName ( ) const override { return NSLOCTEXT ( " AssetTypeActions " , " AssetTypeActions_ScriptClass " , " Script Class " ) ; }
virtual FColor GetTypeColor ( ) const override { return FColor ( 201 , 29 , 85 ) ; }
virtual UClass * GetSupportedClass ( ) const override { return UScriptBlueprint : : StaticClass ( ) ; }
virtual uint32 GetCategories ( ) override { return EAssetTypeCategories : : Misc ; }
virtual void OpenAssetEditor ( const TArray < UObject * > & InObjects , TSharedPtr < class IToolkitHost > EditWithinLevelEditor = TSharedPtr < IToolkitHost > ( ) ) override
{
EToolkitMode : : Type Mode = EditWithinLevelEditor . IsValid ( ) ? EToolkitMode : : WorldCentric : EToolkitMode : : Standalone ;
for ( auto ObjIt = InObjects . CreateConstIterator ( ) ; ObjIt ; + + ObjIt )
{
auto Blueprint = Cast < UBlueprint > ( * ObjIt ) ;
if ( Blueprint & & Blueprint - > SkeletonGeneratedClass & & Blueprint - > GeneratedClass )
{
TSharedRef < FScriptBlueprintEditor > NewBlueprintEditor ( new FScriptBlueprintEditor ( ) ) ;
TArray < UBlueprint * > Blueprints ;
Blueprints . Add ( Blueprint ) ;
NewBlueprintEditor - > InitScriptBlueprintEditor ( Mode , EditWithinLevelEditor , Blueprints , true ) ;
}
else
{
FMessageDialog : : Open ( EAppMsgType : : Ok ,
FText : : FromString ( TEXT ( " Script Blueprint could not be loaded because it derives from an invalid class. Check to make sure the parent class for this blueprint hasn't been removed! " ) ) ) ;
}
}
}
} ;
/**
* Script blueprint module
*/
2014-12-15 15:31:42 -05:00
class FScriptEditorPlugin : public IScriptEditorPlugin , IBlueprintCompiler
2014-04-29 06:45:18 -04:00
{
/** IModuleInterface implementation */
2014-06-13 06:14:46 -04:00
virtual void StartupModule ( ) override ;
virtual void ShutdownModule ( ) override ;
2014-07-03 03:22:03 -04:00
2014-12-15 15:31:42 -05:00
public :
2014-07-03 03:22:03 -04:00
2014-12-15 15:31:42 -05:00
virtual bool CanCompile ( const UBlueprint * Blueprint ) override ;
virtual void PreCompile ( UBlueprint * Blueprint ) override ;
virtual void Compile ( UBlueprint * Blueprint , const FKismetCompilerOptions & CompileOptions , FCompilerResultsLog & Results , TArray < UObject * > * ObjLoaded ) override ;
virtual void PostCompile ( UBlueprint * Blueprint ) override ;
2014-04-29 06:45:18 -04:00
} ;
IMPLEMENT_MODULE ( FScriptEditorPlugin , ScriptEditorPlugin )
void FScriptEditorPlugin : : StartupModule ( )
{
2014-07-03 03:22:03 -04:00
// Register asset types
FModuleManager : : LoadModuleChecked < FAssetToolsModule > ( " AssetTools " ) . Get ( ) . RegisterAssetTypeActions ( MakeShareable ( new FAssetTypeActions_ScriptClass ) ) ;
// Register blueprint compiler
IKismetCompilerInterface & KismetCompilerModule = FModuleManager : : LoadModuleChecked < IKismetCompilerInterface > ( " KismetCompiler " ) ;
2014-12-15 15:31:42 -05:00
KismetCompilerModule . GetCompilers ( ) . Add ( this ) ;
2014-04-29 06:45:18 -04:00
}
void FScriptEditorPlugin : : ShutdownModule ( )
{
}
2014-07-03 03:22:03 -04:00
2014-12-15 15:31:42 -05:00
bool FScriptEditorPlugin : : CanCompile ( const UBlueprint * Blueprint )
2014-07-03 03:22:03 -04:00
{
2014-12-15 15:31:42 -05:00
return Cast < UScriptBlueprint > ( Blueprint ) ! = nullptr ;
}
void FScriptEditorPlugin : : PreCompile ( UBlueprint * Blueprint )
{
}
void FScriptEditorPlugin : : Compile ( UBlueprint * Blueprint , const FKismetCompilerOptions & CompileOptions , FCompilerResultsLog & Results , TArray < UObject * > * ObjLoaded )
{
if ( UScriptBlueprint * ScriptBlueprint = Cast < UScriptBlueprint > ( Blueprint ) )
2014-07-03 03:22:03 -04:00
{
FScriptBlueprintCompiler Compiler ( ScriptBlueprint , Results , CompileOptions , ObjLoaded ) ;
Compiler . Compile ( ) ;
check ( Compiler . NewClass ) ;
}
2014-12-15 15:31:42 -05:00
}
2014-07-03 03:22:03 -04:00
2014-12-15 15:31:42 -05:00
void FScriptEditorPlugin : : PostCompile ( UBlueprint * Blueprint )
{
}