// Copyright 2020 Phyronnaz #pragma once #include "CoreMinimal.h" #include "Containers/StaticArray.h" #include "IVoxelPool.h" class VOXEL_API FVoxelDefaultPool : public IVoxelPool { public: static TVoxelSharedRef Create( int32 ThreadCount, bool bConstantPriorities, const TMap& PriorityCategories, const TMap& PriorityOffsets); virtual ~FVoxelDefaultPool(); public: //~ Begin IVoxelPool Interface virtual void QueueTask(EVoxelTaskType Type, IVoxelQueuedWork* Task) override; virtual void QueueTasks(EVoxelTaskType Type, const TArray& Tasks) override; virtual int32 GetNumTasks() const override; //~ End IVoxelPool Interface private: const TVoxelSharedRef Pool; const TStaticArray PriorityCategories; const TStaticArray PriorityOffsets; explicit FVoxelDefaultPool( int32 ThreadCount, bool bConstantPriorities, const TMap& PriorityCategories, const TMap& PriorityOffsets); public: static void FixPriorityCategories(TMap& PriorityCategories); static void FixPriorityOffsets(TMap& PriorityOffsets); };