29 lines
779 B
C
29 lines
779 B
C
|
// Copyright 2020 Phyronnaz
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "CoreMinimal.h"
|
||
|
#include "Misc/IQueuedWork.h"
|
||
|
|
||
|
class IVoxelQueuedWork : public IQueuedWork
|
||
|
{
|
||
|
public:
|
||
|
// Used for performance reporting and debugging
|
||
|
const FName Name;
|
||
|
// Number of seconds a priority can be cached before being recomputed
|
||
|
const double PriorityDuration;
|
||
|
|
||
|
FORCEINLINE IVoxelQueuedWork(FName Name, double PriorityDuration)
|
||
|
: Name(Name)
|
||
|
, PriorityDuration(PriorityDuration)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
IVoxelQueuedWork(const IVoxelQueuedWork&) = delete;
|
||
|
IVoxelQueuedWork& operator=(const IVoxelQueuedWork&) = delete;
|
||
|
|
||
|
// Called to determine which thread to process next
|
||
|
// Voxel works are usually quite long, so it's worth it to compute all the priorities
|
||
|
// Must be thread safe
|
||
|
virtual uint32 GetPriority() const = 0;
|
||
|
};
|