aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/SmoothFloat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/SmoothFloat.cpp')
-rw-r--r--Minecraft.World/SmoothFloat.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/Minecraft.World/SmoothFloat.cpp b/Minecraft.World/SmoothFloat.cpp
new file mode 100644
index 00000000..116a6d7d
--- /dev/null
+++ b/Minecraft.World/SmoothFloat.cpp
@@ -0,0 +1,29 @@
+#include "stdafx.h"
+#include "SmoothFloat.h"
+
+SmoothFloat::SmoothFloat()
+{
+ targetValue = 0.0f;
+ remainingValue = 0.0f;
+ lastAmount = 0.0f;
+}
+
+float SmoothFloat::getNewDeltaValue(float deltaValue, float accelerationAmount)
+{
+ targetValue += deltaValue;
+
+ deltaValue = (targetValue - remainingValue) * accelerationAmount;
+ lastAmount = lastAmount + (deltaValue - lastAmount) * 0.5f;
+ if ((deltaValue > 0 && deltaValue > lastAmount) || (deltaValue < 0 && deltaValue < lastAmount))
+ {
+ deltaValue = lastAmount;
+ }
+ remainingValue += deltaValue;
+
+ return deltaValue;
+}
+
+float SmoothFloat::getTargetValue()
+{
+ return targetValue;
+} \ No newline at end of file