summaryrefslogtreecommitdiffstats
path: root/src/Vector3.h
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2015-05-08 21:52:41 +0200
committerMattes D <github@xoft.cz>2015-05-08 21:52:41 +0200
commit9329c2c2cb16d3ddbd3f810441752271da10f127 (patch)
tree7e7584d9d735a310e3b7b650ab2f8bc577103ce7 /src/Vector3.h
parentFix build URLs, now .tar.gz (diff)
parentAdded float comparison warning overrides to Vector3::hasNonZeroLength (diff)
downloadcuberite-9329c2c2cb16d3ddbd3f810441752271da10f127.tar
cuberite-9329c2c2cb16d3ddbd3f810441752271da10f127.tar.gz
cuberite-9329c2c2cb16d3ddbd3f810441752271da10f127.tar.bz2
cuberite-9329c2c2cb16d3ddbd3f810441752271da10f127.tar.lz
cuberite-9329c2c2cb16d3ddbd3f810441752271da10f127.tar.xz
cuberite-9329c2c2cb16d3ddbd3f810441752271da10f127.tar.zst
cuberite-9329c2c2cb16d3ddbd3f810441752271da10f127.zip
Diffstat (limited to 'src/Vector3.h')
-rw-r--r--src/Vector3.h32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/Vector3.h b/src/Vector3.h
index c5431438e..c5a3f9f05 100644
--- a/src/Vector3.h
+++ b/src/Vector3.h
@@ -78,6 +78,20 @@ public:
);
}
+ inline bool HasNonZeroLength(void) const
+ {
+ #ifndef __GNUC__
+ #pragma clang diagnostics push
+ #pragma clang diagnostics ignored "-Wfloat-equal"
+ #endif
+
+ return ((x != 0) || (y != 0) || (z != 0));
+
+ #ifndef __GNUC__
+ #pragma clang diagnostics pop
+ #endif
+ }
+
inline double Length(void) const
{
return sqrt(static_cast<double>(x * x + y * y + z * z));
@@ -119,13 +133,19 @@ public:
inline bool Equals(const Vector3<T> & a_Rhs) const
{
- // Perform a bitwise comparison of the contents - we want to know whether this object is exactly equal
+ // Perform a strict comparison of the contents - we want to know whether this object is exactly equal
// To perform EPS-based comparison, use the EqualsEps() function
- return (
- (memcmp(&x, &a_Rhs.x, sizeof(x)) == 0) &&
- (memcmp(&y, &a_Rhs.y, sizeof(y)) == 0) &&
- (memcmp(&z, &a_Rhs.z, sizeof(z)) == 0)
- );
+
+ #ifndef __GNUC__
+ #pragma clang diagnostics push
+ #pragma clang diagnostics ignored "-Wfloat-equal"
+ #endif
+
+ return !((x != a_Rhs.x) || (y != a_Rhs.y) || (z != a_Rhs.z));
+
+ #ifndef __GNUC__
+ #pragma clang diagnostics pop
+ #endif
}
inline bool EqualsEps(const Vector3<T> & a_Rhs, T a_Eps) const