CelticCraft/Plugins/VoxelFree/Source/Voxel/Public/VoxelTools/Gen/VoxelToolsBase.h

76 lines
2.1 KiB
C
Raw Permalink Normal View History

2023-07-03 16:17:13 +00:00
// Copyright 2020 Phyronnaz
#pragma once
#include "CoreMinimal.h"
#include "VoxelValue.h"
#include "VoxelMaterial.h"
#include "VoxelTools/VoxelPaintMaterial.h"
#include "Engine/LatentActionManager.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "VoxelToolsBase.generated.h"
class AVoxelWorld;
USTRUCT(BlueprintType)
struct FModifiedVoxelValue
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel")
FIntVector Position = FIntVector(ForceInit);
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel")
float OldValue = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel")
float NewValue = 0;
FModifiedVoxelValue() = default;
FModifiedVoxelValue(const FIntVector& Position, float OldValue, float NewValue)
: Position(Position)
, OldValue(OldValue)
, NewValue(NewValue)
{
}
FModifiedVoxelValue(const FIntVector& Position, FVoxelValue OldValue, FVoxelValue NewValue)
: Position(Position)
, OldValue(OldValue.ToFloat())
, NewValue(NewValue.ToFloat())
{
}
};
USTRUCT(BlueprintType)
struct FModifiedVoxelMaterial
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel")
FIntVector Position = FIntVector(ForceInit);
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel")
FVoxelMaterial OldMaterial = FVoxelMaterial(ForceInit);
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel")
FVoxelMaterial NewMaterial = FVoxelMaterial(ForceInit);
};
DECLARE_DELEGATE(FOnVoxelToolComplete);
DECLARE_DELEGATE_OneParam(FOnVoxelToolComplete_WithModifiedValues, const TArray<FModifiedVoxelValue>&);
DECLARE_DELEGATE_OneParam(FOnVoxelToolComplete_WithModifiedMaterials, const TArray<FModifiedVoxelMaterial>&);
UCLASS()
class VOXEL_API UVoxelToolsBase : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "Voxel|Tools|Base")
static FVoxelIntBox GetModifiedVoxelValuesBounds(const TArray<FModifiedVoxelValue>& ModifiedVoxels);
UFUNCTION(BlueprintCallable, Category = "Voxel|Tools|Base")
static FVoxelIntBox GetModifiedVoxelMaterialsBounds(const TArray<FModifiedVoxelMaterial>& ModifiedVoxels);
};