CelticCraft/Plugins/VoxelFree/Source/Voxel/Public/VoxelSpawners/VoxelHierarchicalInstancedStaticMeshComponent.h

60 lines
1.7 KiB
C
Raw Permalink Normal View History

2023-07-03 16:17:13 +00:00
// Copyright 2020 Phyronnaz
#pragma once
#include "CoreMinimal.h"
#include "VoxelMinimal.h"
#include "VoxelEnums.h"
#include "VoxelIntBox.h"
#include "VoxelSpawners/VoxelInstancedMeshSettings.h"
#include "Components/HierarchicalInstancedStaticMeshComponent.h"
#include "VoxelHierarchicalInstancedStaticMeshComponent.generated.h"
struct FVoxelSpawnerTransform;
struct FVoxelSpawnerTransforms;
struct FVoxelHISMBuiltData;
struct FVoxelInstancedMeshAndActorSettings;
class IVoxelPool;
class FVoxelConstDataAccelerator;
class FVoxelInstancedMeshManager;
DECLARE_VOXEL_MEMORY_STAT(TEXT("Voxel HISM Memory"), STAT_VoxelHISMMemory, STATGROUP_VoxelMemory, VOXEL_API);
struct FVoxelInstancesSection
{
int32 StartIndex = -1;
int32 Num = -1;
// Between 0 and Num - 1
TArray<int32> RemovedIndices;
};
// Need to prefix names with Voxel to avoid collisions with normal HISM
UCLASS()
class VOXEL_API UVoxelHierarchicalInstancedStaticMeshComponent : public UHierarchicalInstancedStaticMeshComponent
{
GENERATED_BODY()
public:
// How long to wait for new instances before triggering a new cull tree/render update
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel")
float Voxel_BuildDelay = 0.5f;
private:
UPROPERTY()
TObjectPtr<UMaterialInterface> Voxel_DebugMaterial;
public:
UVoxelHierarchicalInstancedStaticMeshComponent(const FObjectInitializer& ObjectInitializer);
~UVoxelHierarchicalInstancedStaticMeshComponent();
};
inline UVoxelHierarchicalInstancedStaticMeshComponent::UVoxelHierarchicalInstancedStaticMeshComponent(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
inline UVoxelHierarchicalInstancedStaticMeshComponent::~UVoxelHierarchicalInstancedStaticMeshComponent()
{
}