28 lines
1.2 KiB
C++
28 lines
1.2 KiB
C++
|
// Copyright 2020 Phyronnaz
|
||
|
|
||
|
#include "VoxelTools/Tools/VoxelToolLibary.h"
|
||
|
#include "VoxelTools/Tools/VoxelToolBase.h"
|
||
|
|
||
|
#include "Materials/MaterialInstanceDynamic.h"
|
||
|
|
||
|
void UVoxelToolLibrary::UpdateSphereOverlayMaterial(UVoxelToolBase* Tool, UMaterialInstanceDynamic* OverlayMaterialInstance, EVoxelFalloff FalloffType, float Falloff)
|
||
|
{
|
||
|
VOXEL_FUNCTION_COUNTER();
|
||
|
|
||
|
if (!Tool || !Tool->SharedConfig || !OverlayMaterialInstance)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const FVector Position = Tool->GetToolPreviewPosition();
|
||
|
|
||
|
const float Radius = Tool->SharedConfig->BrushSize / 2.f;
|
||
|
OverlayMaterialInstance->SetScalarParameterValue(STATIC_FNAME("Radius"), Radius);
|
||
|
OverlayMaterialInstance->SetVectorParameterValue(STATIC_FNAME("Position"), Position);
|
||
|
OverlayMaterialInstance->SetScalarParameterValue(STATIC_FNAME("Opacity"), Tool->SharedConfig->ToolOpacity);
|
||
|
OverlayMaterialInstance->SetScalarParameterValue(STATIC_FNAME("Falloff"), Falloff);
|
||
|
OverlayMaterialInstance->SetScalarParameterValue(STATIC_FNAME("EnableFalloff"), true);
|
||
|
OverlayMaterialInstance->SetScalarParameterValue(STATIC_FNAME("FalloffType"), int32(FalloffType));
|
||
|
|
||
|
Tool->SetToolOverlayBounds(FBox(Position - Radius, Position + Radius));
|
||
|
}
|