summaryrefslogtreecommitdiff
path: root/Runtime/Serialize/LoadProgress.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Serialize/LoadProgress.h')
-rw-r--r--Runtime/Serialize/LoadProgress.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/Runtime/Serialize/LoadProgress.h b/Runtime/Serialize/LoadProgress.h
new file mode 100644
index 0000000..d8fdabb
--- /dev/null
+++ b/Runtime/Serialize/LoadProgress.h
@@ -0,0 +1,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