summaryrefslogtreecommitdiff
path: root/Runtime/Serialize/LoadProgress.h
blob: d8fdabba341e823345c647fa5edd36b22052b4c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef LOAD_PROGRESS_H
#define LOAD_PROGRESS_H

class LoadProgress
{
	volatile float* progressIndicator;
	float progressInterval;
	
public:
	float totalItems;
	float processedItems;
	
	LoadProgress(unsigned total, float interval, float* indicator) : processedItems(0), totalItems(total), progressIndicator(indicator), progressInterval (interval) {}
	
	void ItemProcessed (int count = 1)
	{
		processedItems = std::min (totalItems, processedItems + count);
		
		if (progressIndicator)
			*progressIndicator = totalItems == 0 ? 1.0f : progressInterval * processedItems / totalItems;
	}
	
};
#endif