54 lines
1.8 KiB
C++
54 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Factories/Factory.h"
|
|
#include "WingServer.h"
|
|
#include "WingHandler.h"
|
|
#include "WingFactories.h"
|
|
#include "Factories/BlueprintFunctionLibraryFactory.h"
|
|
#include "Create_NoArgs.generated.h"
|
|
|
|
UCLASS()
|
|
class UWing_Create_NoArgs : public UWingHandler
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(EditAnywhere, meta=(Description="Full asset path for the new asset (e.g. '/Game/MyFolder/MyAsset')"))
|
|
FString Path;
|
|
|
|
virtual void Register() override
|
|
{
|
|
TArray<UClass*> FactoryClasses;
|
|
GetDerivedClasses(UFactory::StaticClass(), FactoryClasses);
|
|
for (UClass* Class : FactoryClasses)
|
|
{
|
|
if (!WingFactories::CanCreate(Class)) continue;
|
|
if (WingFactories::GetParameterNames(Class).Num() > 0) continue;
|
|
|
|
FString FactoryName = WingFactories::DeriveFactoryName(Class);
|
|
FString CommandName = FString::Printf(TEXT("Create_%s"), *FactoryName);
|
|
FString Doc = FString::Printf(TEXT("Create a new %s asset."), *FactoryName);
|
|
UWingServer::AddHandler(this, CommandName, Class, EWingHandlerKind::Create, Doc);
|
|
}
|
|
|
|
UWingServer::AddHandler(this, TEXT("Create_BlueprintFunctionLibrary"),
|
|
UBlueprintFunctionLibraryFactory::StaticClass(), EWingHandlerKind::Create,
|
|
TEXT("Create a blueprint function library"));
|
|
|
|
UClass *BlueprintInterfaceFactory = FindObject<UClass>(nullptr, TEXT("/Script/UnrealEd.BlueprintInterfaceFactory"));
|
|
if (BlueprintInterfaceFactory)
|
|
UWingServer::AddHandler(this, TEXT("Create_BlueprintInterface"),
|
|
BlueprintInterfaceFactory, EWingHandlerKind::Create,
|
|
TEXT("Create a blueprint interface"));
|
|
}
|
|
|
|
virtual void Handle() override
|
|
{
|
|
UClass* FactoryClass = Cast<UClass>(ConfigurationObject);
|
|
UFactory* Factory = NewObject<UFactory>(GetTransientPackage(), FactoryClass);
|
|
WingFactories::CreateAsset(Path, Factory, WingOut::Stdout);
|
|
WingOut::Stdout.Printf(TEXT("Created.\n"));
|
|
}
|
|
};
|