Hi, I have set of plugins and some plugins was broken after migrating on 4.15
Problem is that blueprint losts all class types from certain plugins when reloading editor. Also it doesn’t allow me to cook the project. I created a minimal testing file to figure out whats happening and checked how it works with each plugin. That file is:
#pragma once
#include "Engine.h"
#include "Object.h"
#include "TestUClass.generated.h"
#define THIS_API CHARAMOD_API
#define THIS_CLASS_NAME(prename) prename ## THIS_API
#define UTHIS_CLASS_NAME_GLUED THIS_CLASS_NAME(UTestBPType_)
UCLASS(BlueprintType)
class THIS_API UTHIS_CLASS_NAME_GLUED : public UObject
{
GENERATED_UCLASS_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 TestProperty;
};
UTHIS_CLASS_NAME_GLUED::UTHIS_CLASS_NAME_GLUED(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) {};
When this file is added to the plugin was worked fine it’s type works correctly in blueprint and don’t cause any errors. While this file is added to the malfunctioning plugin it’s class could not be reloaded.
.CS File of plugin that working fine:
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0",
"FriendlyName": "Inventory plugin",
"Description": "Inventory plugin includes new asset types, editors and components allowing you to create flexible customized inventories. Addiionaly plugin provides an interaction system which helps to create ingame interactive objects.",
"Category": "Gameplay",
"CreatedBy": "Sunspots, inc.",
"CreatedByURL": "",
"DocsURL": "",
"MarketplaceURL": "",
"SupportURL": "",
"EnabledByDefault" : true,
"CanContainContent": false,
"IsBetaVersion": false,
"Installed": false,
"Modules": [
{
"Name": "GameInventory",
"Type": "Runtime",
"LoadingPhase": "Default"
},
{
"Name": "GameInventoryEditor",
"Type": "Editor",
"LoadingPhase": "Default"
},
{
"Name": "GameInventoryEditorDelayed",
"Type": "Editor",
"LoadingPhase": "PostEngineInit"
}
]
}
.Bulid file
public class GameInventory : ModuleRules
{
public GameInventory(TargetInfo Target)
{
PublicIncludePaths.AddRange(
new string[] {
"GameInventory/Public",
// ... add public include paths required here ...
}
);
PrivateIncludePaths.AddRange(
new string[] {
"GameInventory/Private",
// ... add other private include paths required here ...
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
// ... add other public dependencies that you statically link with here ...
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"CoreUObject",
"Engine",
"Slate",
"SlateCore",
"RHI",
"RenderCore",
"InputCore",
"AnimGraphRuntime",
"UMG",
// ... add private dependencies that you statically link with here ...
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
}
}
.CS File of broken plugin:
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0",
"FriendlyName": "Extended character control modification",
"Description": "This plugin allows you to build a heavily customizable character movement\r\nreplication system.",
"Category": "Gameplay",
"CreatedBy": "Sunspots, inc.",
"CreatedByURL": "",
"DocsURL": "",
"MarketplaceURL": "",
"SupportURL": "",
"EnabledByDefault" : true,
"CanContainContent": false,
"IsBetaVersion": false,
"Installed": false,
"Modules": [
{
"Name": "CharaMod",
"Type": "Runtime",
"LoadingPhase": "Default"
},
{
"Name": "CharaModEditor",
"Type": "Editor",
"LoadingPhase": "Default"
}
]
}
Build file:
using UnrealBuildTool;
public class CharaModEditor : ModuleRules
{
public CharaModEditor(TargetInfo Target)
{
PrivateIncludePaths.Add("CharaModEditor/Private");
PrivateDependencyModuleNames.AddRange(
new string[] {
"Core",
"CoreUObject",
"Slate",
"SlateCore",
"InputCore",
"Engine",
"UnrealEd", // for FAssetEditorManager
"PropertyEditor",
"RenderCore",
"EditorStyle",
"AnimGraph",
"CharaMod",
"BlueprintGraph",
"Kismet",
"AssetTools",
"KismetWidgets",
"KismetCompiler",
"GraphEditor",
"Projects",
"ClassViewer"
}
);
}
}
On 4.12 it was working without any problems
Error screenshot: