54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "WingServer.h"
|
|
#include "WingHandler.h"
|
|
#include "WingUtils.h"
|
|
#include "Materials/MaterialFunction.h"
|
|
#include "Factories/MaterialFunctionFactoryNew.h"
|
|
#include "WingPackageMaker.h"
|
|
#include "MaterialFunction_Create.generated.h"
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// ---------------------------------------------------------------------------
|
|
// ---------------------------------------------------------------------------
|
|
|
|
UCLASS()
|
|
class UWing_MaterialFunction_Create : public UObject, public IWingHandler
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(meta=(Description="Full asset path for the new material function (e.g. '/Game/Materials/MF_MyFunc')"))
|
|
FString AssetPath;
|
|
|
|
UPROPERTY(meta=(Optional, Description="Description for the material function"))
|
|
FString Description;
|
|
|
|
virtual FString GetDescription() const override
|
|
{
|
|
return TEXT("Create a new UMaterialFunction asset with an optional description.");
|
|
}
|
|
|
|
virtual void Handle() override
|
|
{
|
|
WingPackageMaker Maker(AssetPath);
|
|
if (!Maker.Ok()) return;
|
|
|
|
// Create via IAssetTools + factory.
|
|
UMaterialFunction* MF = Maker.CreateAsset<UMaterialFunction, UMaterialFunctionFactoryNew>();
|
|
if (!MF) return;
|
|
|
|
// Set optional description.
|
|
if (!Description.IsEmpty())
|
|
MF->Description = Description;
|
|
|
|
bool bSaved = WingUtils::SaveGenericPackage(MF);
|
|
|
|
UWingServer::Printf(TEXT("Created %s\n"), *MF->GetPathName());
|
|
if (!bSaved)
|
|
UWingServer::Print(TEXT("WARNING: Package save failed\n"));
|
|
}
|
|
};
|