#pragma once
#include "CoreMinimal.h"
#include "Components/BoxComponent.h"
#include "FadeCollisionComponent.generated.h"
UCLASS()
class AURA_API UFadeMaterials : public UDataAsset
{
GENERATED_BODY()
public:
UMaterialInterface* FindFadeMaterial(FString& MaterialAssetName)
{
UMaterialInterface** MaterialPtr = FadeMaterials.Find(MaterialAssetName);
return MaterialPtr ? *MaterialPtr : nullptr;
};
protected:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "FadeMaterials")
TMap<FString, UMaterialInterface*> FadeMaterials;
};
UCLASS()
class AURA_API UFadeCollisionComponent : public UBoxComponent
{
GENERATED_BODY()
UFadeCollisionComponent();
public:
virtual void InitializeComponent() override;
UFUNCTION()
virtual void OnBoxBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult);
UFUNCTION()
virtual void OnBoxEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Fade")
UFadeMaterials* FadeMaterials;
protected:
void SwapInFadeMaterials(UStaticMeshComponent* StaticMesh);
void RestoreOriginalMaterials(UStaticMeshComponent* StaticMesh);
TMap<TObjectPtr<UStaticMeshComponent>, TArray<TObjectPtr<UMaterialInterface>>> MeshToOriginalMaterialsMap;
};