diff options
Diffstat (limited to 'NorthstarDLL/core/math/vector.h')
-rw-r--r-- | NorthstarDLL/core/math/vector.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/NorthstarDLL/core/math/vector.h b/NorthstarDLL/core/math/vector.h new file mode 100644 index 00000000..95eae7ca --- /dev/null +++ b/NorthstarDLL/core/math/vector.h @@ -0,0 +1,52 @@ +#pragma once + +union Vector3 +{ + struct + { + float x; + float y; + float z; + }; + + float raw[3]; + + Vector3() : x(0), y(0), z(0) {} + Vector3(float x, float y, float z) : x(x), y(y), z(z) {} + Vector3(float* pRawFloats) // assumes float[3] => vector + { + memcpy(raw, pRawFloats, sizeof(this)); + } + + void MakeValid() + { + for (auto& fl : raw) + if (isnan(fl)) + fl = 0; + } + + // todo: more operators maybe + bool operator==(const Vector3& other) + { + return x == other.x && y == other.y && z == other.z; + } +}; + +union QAngle +{ + struct + { + float x; + float y; + float z; + float w; + }; + + float raw[4]; + + // todo: more operators maybe + bool operator==(const QAngle& other) + { + return x == other.x && y == other.y && z == other.z && w == other.w; + } +}; |