mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-05 02:51:49 +00:00
NumberSetting.observe
This commit is contained in:
parent
f8ec75b121
commit
7374013eeb
3 changed files with 31 additions and 14 deletions
|
|
@ -3,8 +3,10 @@
|
|||
|
||||
#include <limits>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "../typedefs.h"
|
||||
#include "../delegates.h"
|
||||
|
||||
enum class setting_format {
|
||||
simple, percent
|
||||
|
|
@ -34,6 +36,7 @@ protected:
|
|||
number_t value;
|
||||
number_t min;
|
||||
number_t max;
|
||||
std::vector<consumer<number_t>> consumers;
|
||||
public:
|
||||
NumberSetting(
|
||||
number_t value,
|
||||
|
|
@ -56,7 +59,13 @@ public:
|
|||
}
|
||||
|
||||
void set(number_t value) {
|
||||
if (value == this->value) {
|
||||
return;
|
||||
}
|
||||
this->value = value;
|
||||
for (auto& callback : consumers) {
|
||||
callback(value);
|
||||
}
|
||||
}
|
||||
|
||||
number_t getMin() const {
|
||||
|
|
@ -71,6 +80,10 @@ public:
|
|||
return (value - min) / (max - min);
|
||||
}
|
||||
|
||||
void observe(consumer<number_t> callback) {
|
||||
consumers.push_back(callback);
|
||||
}
|
||||
|
||||
virtual void resetToDefault() override {
|
||||
value = initial;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue