64 lines
1.9 KiB
C
64 lines
1.9 KiB
C
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
|
||
|
|
/**
|
||
|
|
* CubeBuilder: Builds a 3D cube brush.
|
||
|
|
*/
|
||
|
|
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include "CoreMinimal.h"
|
||
|
|
#include "UObject/ObjectMacros.h"
|
||
|
|
#include "UObject/UObjectGlobals.h"
|
||
|
|
#include "Builders/EditorBrushBuilder.h"
|
||
|
|
#include "CubeBuilder.generated.h"
|
||
|
|
|
||
|
|
class ABrush;
|
||
|
|
|
||
|
|
UCLASS(MinimalAPI, autoexpandcategories = BrushSettings, EditInlineNew, meta = (DisplayName = "Box"))
|
||
|
|
class UCubeBuilder: public UEditorBrushBuilder
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
GENERATED_BODY()
|
||
|
|
|
||
|
|
public:
|
||
|
|
UCubeBuilder(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
|
||
|
|
|
||
|
|
/** The size of the cube in the X dimension */
|
||
|
|
UPROPERTY(EditAnywhere, Category = BrushSettings, meta = (ClampMin = "0.000001"))
|
||
|
|
float X;
|
||
|
|
|
||
|
|
/** The size of the cube in the Y dimension */
|
||
|
|
UPROPERTY(EditAnywhere, Category = BrushSettings, meta = (ClampMin = "0.000001"))
|
||
|
|
float Y;
|
||
|
|
|
||
|
|
/** The size of the cube in the Z dimension */
|
||
|
|
UPROPERTY(EditAnywhere, Category = BrushSettings, meta = (ClampMin = "0.000001"))
|
||
|
|
float Z;
|
||
|
|
|
||
|
|
/** The thickness of the cube wall when hollow */
|
||
|
|
UPROPERTY(EditAnywhere, Category = BrushSettings, meta = (EditCondition = "Hollow"))
|
||
|
|
float WallThickness;
|
||
|
|
|
||
|
|
UPROPERTY()
|
||
|
|
FName GroupName;
|
||
|
|
|
||
|
|
/** Whether this is a hollow or solid cube */
|
||
|
|
UPROPERTY(EditAnywhere, Category = BrushSettings)
|
||
|
|
uint32 Hollow : 1;
|
||
|
|
|
||
|
|
/** Whether extra internal faces should be generated for each cube face */
|
||
|
|
UPROPERTY(EditAnywhere, Category = BrushSettings)
|
||
|
|
uint32 Tessellated : 1;
|
||
|
|
|
||
|
|
//~ Begin UObject Interface
|
||
|
|
virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
|
||
|
|
//~ End UObject Interface
|
||
|
|
|
||
|
|
//~ Begin UBrushBuilder Interface
|
||
|
|
virtual bool Build(UWorld* InWorld, ABrush* InBrush = NULL) override;
|
||
|
|
//~ End UBrushBuilder Interface
|
||
|
|
|
||
|
|
// @todo document
|
||
|
|
virtual void BuildCube(int32 Direction, float dx, float dy, float dz, bool _tessellated);
|
||
|
|
};
|