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

130 lines
No EOL
3.8 KiB
C++

// Copyright 2020 Phyronnaz
#pragma once
#include "CoreMinimal.h"
#include "VoxelNodeHelper.h"
#include "VoxelNodeHelperMacros.h"
#include "VoxelGraphErrorReporter.h"
#include "VoxelCoordinatesNodes.generated.h"
UCLASS(Abstract, Category = "Coordinates")
class VOXELGRAPH_API UVoxelCoordinateNode : public UVoxelNodeWithDependencies
{
GENERATED_BODY()
public:
UVoxelCoordinateNode();
};
//////////////////////////////////////////////////////////////////////////////////////
// Return the current X
UCLASS(DisplayName = "X", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_XF : public UVoxelCoordinateNode
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_XF();
virtual uint8 GetNodeDependencies() const override;
};
// Return the current Y
UCLASS(DisplayName = "Y", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_YF : public UVoxelCoordinateNode
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_YF();
virtual uint8 GetNodeDependencies() const override;
};
// Return the current Z
UCLASS(DisplayName = "Z", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_ZF : public UVoxelCoordinateNode
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_ZF();
virtual uint8 GetNodeDependencies() const override;
};
//////////////////////////////////////////////////////////////////////////////////////
// Return the current X in global space, before the transform is applied to it. Same as X if not a graph asset
UCLASS(DisplayName = "Global X", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_GlobalX : public UVoxelCoordinateNode
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_GlobalX();
virtual uint8 GetNodeDependencies() const override;
};
// Return the current Y in global space, before the transform is applied to it. Same as Y if not a graph asset
UCLASS(DisplayName = "Global Y", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_GlobalY : public UVoxelCoordinateNode
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_GlobalY();
virtual uint8 GetNodeDependencies() const override;
};
// Return the current Z in global space, before the transform is applied to it. Same as Z if not a graph asset
UCLASS(DisplayName = "Global Z", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_GlobalZ : public UVoxelCoordinateNode
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_GlobalZ();
virtual uint8 GetNodeDependencies() const override;
};
//////////////////////////////////////////////////////////////////////////////////////
// Transform coordinates from local voxel space to global voxel space. Used for graph assets
UCLASS(DisplayName = "Local To Global", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_LocalToGlobal : public UVoxelNodeWithContext
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_LocalToGlobal();
};
// Transform coordinates from global voxel space to local voxel space. Used for graph assets
UCLASS(DisplayName = "Global To Local", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_GlobalToLocal : public UVoxelNodeWithContext
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_GlobalToLocal();
};
// Transform vector from local voxel space to global voxel space. Used for graph assets
UCLASS(DisplayName = "Transform Vector", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_TransformVector : public UVoxelNodeWithContext
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_TransformVector();
};
// Transform vector from global voxel space to local voxel space. Used for graph assets
UCLASS(DisplayName = "Inverse Transform Vector", Category = "Coordinates")
class VOXELGRAPH_API UVoxelNode_InverseTransformVector : public UVoxelNodeWithContext
{
GENERATED_BODY()
GENERATED_VOXELNODE_BODY()
UVoxelNode_InverseTransformVector();
};