CelticCraft/Plugins/VoxelFree/Source/Voxel/Private/VoxelTools/Tools/VoxelToolLibrary.cpp

28 lines
No EOL
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));
}