Files
integration/Plugins/UEWingman/Source/UEWingman/Handlers/MaterialInstance_ClearParameter.h
2026-04-05 03:20:51 -04:00

51 lines
1.5 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "WingServer.h"
#include "WingHandler.h"
#include "WingFetcher.h"
#include "WingUtils.h"
#include "WingMaterialParameter.h"
#include "Materials/MaterialInstanceConstant.h"
#include "MaterialTypes.h"
#include "MaterialInstance_ClearParameter.generated.h"
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
UCLASS()
class UWing_MaterialInstance_ClearParameter : public UWingHandler
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, meta=(Description="Target material instance"))
FString MaterialInstance;
UPROPERTY(EditAnywhere, meta=(Description="Parameter ID: 'Name', 'Layer:N:Name', or 'Blend:N:Name'"))
FString Parameter;
virtual void Register() override
{
UWingServer::AddHandler(this,
TEXT("Remove a parameter override from a Material Instance, reverting it to the parent material's value."));
}
virtual void Handle() override
{
WingFetcher F(WingOut::Stdout);
UMaterialInstanceConstant* MI = F.Asset(MaterialInstance).Cast<UMaterialInstanceConstant>();
if (!MI) return;
// Parse the parameter ID.
FMaterialParameterInfo ID;
if (!WingMaterialParameter::ParseID(Parameter, ID, WingOut::Stdout))
return;
if (!WingMaterialParameter::RemoveOverride(ID, MI, WingOut::Stdout)) return
WingOut::Stdout.Printf(TEXT("Removed override\n"));
}
};