67 lines
1.5 KiB
C++
67 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "VoxelMesh.h"
|
|
#include "UObject/Object.h"
|
|
#include "VoxelBlock.generated.h"
|
|
|
|
class AVoxelWorld;
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct VOXEL_API FVoxelBlock
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel|Block")
|
|
FName Type;
|
|
|
|
FVoxelBlock() : FVoxelBlock(FName(TEXT("Air"))) { }
|
|
|
|
FVoxelBlock(FName InType) : Type(InType) { }
|
|
|
|
const static FVoxelBlock InvalidBlock;
|
|
|
|
bool IsValidBlock() const { return Type != NAME_None; }
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EVoxelBlockShape : uint8
|
|
{
|
|
Invalid,
|
|
Air,
|
|
Cube,
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct VOXEL_API FVoxelBlockType
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel|Block")
|
|
EVoxelBlockShape Shape;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel|Block")
|
|
FVector2D CustomTopFaceUV;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel|Block")
|
|
FVector2D CustomBottomFaceUV;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel|Block")
|
|
FVector2D CustomFrontFaceUV;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel|Block")
|
|
FVector2D CustomBackFaceUV;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel|Block")
|
|
FVector2D CustomLeftFaceUV;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel|Block")
|
|
FVector2D CustomRightFaceUV;
|
|
|
|
FVoxelBlockType() : FVoxelBlockType(EVoxelBlockShape::Air) { }
|
|
|
|
FVoxelBlockType(EVoxelBlockShape InShape) : Shape(InShape) { }
|
|
|
|
const static FVoxelBlockType InvalidBlockType;
|
|
};
|