CelticCraft/Plugins/VoxelFree/Source/VoxelGraph/Public/VoxelNodes/VoxelIfNode.h

62 lines
1.4 KiB
C
Raw Normal View History

2023-07-03 16:17:13 +00:00
// Copyright 2020 Phyronnaz
#pragma once
#include "CoreMinimal.h"
#include "VoxelNodeHelper.h"
#include "VoxelNodeHelperMacros.h"
#include "VoxelIfNode.generated.h"
UENUM()
enum class EVoxelNodeIfBranchToUseForRangeAnalysis : uint8
{
None,
UseTrue,
UseFalse
};
// Branch node
UCLASS(DisplayName = "If", Category = "Flow Control", meta = (Keywords = "branch"))
class VOXELGRAPH_API UVoxelNode_If : public UVoxelNodeHelper
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
public:
// If the condition range analysis fails, use this branch instead of failing.
// DO NOT CHANGE THIS UNLESS YOU KNOW WHAT YOU ARE DOING, ELSE YOUR WORLD WILL HAVE HOLES
UPROPERTY(EditAnywhere, AdvancedDisplay, Category = "Voxel")
EVoxelNodeIfBranchToUseForRangeAnalysis BranchToUseForRangeAnalysis = EVoxelNodeIfBranchToUseForRangeAnalysis::None;
public:
UVoxelNode_If();
};
// Helper
UCLASS(NotPlaceable)
class VOXELGRAPH_API UVoxelNode_IfWithDefaultToFalse : public UVoxelNode_If
{
GENERATED_BODY()
public:
UVoxelNode_IfWithDefaultToFalse()
{
BranchToUseForRangeAnalysis = EVoxelNodeIfBranchToUseForRangeAnalysis::UseFalse;
}
};
// Helper
UCLASS(NotPlaceable)
class VOXELGRAPH_API UVoxelNode_IfWithDefaultToTrue : public UVoxelNode_If
{
GENERATED_BODY()
public:
UVoxelNode_IfWithDefaultToTrue()
{
BranchToUseForRangeAnalysis = EVoxelNodeIfBranchToUseForRangeAnalysis::UseTrue;
}
};