diff --git a/lib/linux64/mathlib.a b/lib/linux64/mathlib.a
index a8b9de60..abd60100 100644
Binary files a/lib/linux64/mathlib.a and b/lib/linux64/mathlib.a differ
diff --git a/lib/public/win64/mathlib.lib b/lib/public/win64/mathlib.lib
index fe1e014c..a8dac2c1 100644
Binary files a/lib/public/win64/mathlib.lib and b/lib/public/win64/mathlib.lib differ
diff --git a/linux_sdk/Makefile.mathlib b/linux_sdk/Makefile.mathlib
index d1ff360a..b8cbe885 100644
--- a/linux_sdk/Makefile.mathlib
+++ b/linux_sdk/Makefile.mathlib
@@ -47,7 +47,6 @@ LIB_OBJS= \
$(LIB_OBJ_DIR)/sse.o \
$(LIB_OBJ_DIR)/sseconst.o \
$(LIB_OBJ_DIR)/ssenoise.o \
- $(LIB_OBJ_DIR)/vector.o \
$(LIB_OBJ_DIR)/vmatrix.o \
all: dirs $(NAME).$(SHLIBEXT)
diff --git a/mathlib/mathlib.vcxproj b/mathlib/mathlib.vcxproj
index d4d5881b..8b434044 100644
--- a/mathlib/mathlib.vcxproj
+++ b/mathlib/mathlib.vcxproj
@@ -296,6 +296,7 @@
/Zo %(AdditionalOptions)
+ stdcpp17
@@ -331,7 +332,6 @@
-
diff --git a/mathlib/mathlib.vcxproj.filters b/mathlib/mathlib.vcxproj.filters
index e0592b98..a3d1f00c 100644
--- a/mathlib/mathlib.vcxproj.filters
+++ b/mathlib/mathlib.vcxproj.filters
@@ -66,9 +66,6 @@
Source Files
-
- Source Files
-
Source Files
diff --git a/mathlib/mathlib_base.cpp b/mathlib/mathlib_base.cpp
index fb519a31..770e9b2f 100644
--- a/mathlib/mathlib_base.cpp
+++ b/mathlib/mathlib_base.cpp
@@ -41,8 +41,11 @@ bool s_bMathlibInitialized = false;
void Sys_Error (char *error, ...);
#endif
+const Vector vec3_origin(0,0,0);
+const VectorWS vec3ws_origin(0,0,0);
const QAngle vec3_angle(0,0,0);
const Quaternion quat_identity(0,0,0,1);
+const QuaternionWS quatws_identity(0,0,0,1);
const Vector vec3_invalid( FLT_MAX, FLT_MAX, FLT_MAX );
const int nanmask = 255<<23;
diff --git a/mathlib/vector.cpp b/mathlib/vector.cpp
deleted file mode 100644
index f8066568..00000000
--- a/mathlib/vector.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//
-//=============================================================================//
-
-#include "mathlib/mathlib.h"
-#include "mathlib/vector.h"
-
-const Vector vec3_origin(0,0,0);
-
diff --git a/public/mathlib/mathlib.h b/public/mathlib/mathlib.h
index bdd5d9a6..375346b3 100644
--- a/public/mathlib/mathlib.h
+++ b/public/mathlib/mathlib.h
@@ -10,6 +10,7 @@
#include
#include "tier0/basetypes.h"
#include "mathlib/vector.h"
+#include "mathlib/vectorws.h"
#include "mathlib/vector2d.h"
#include "tier0/dbg.h"
@@ -258,11 +259,13 @@ public:
extern bool s_bMathlibInitialized;
-extern const Vector vec3_origin;
-extern const QAngle vec3_angle;
-extern const Quaternion quat_identity;
+extern const Vector vec3_origin;
+extern const VectorWS vec3ws_origin;
+extern const QAngle vec3_angle;
+extern const Quaternion quat_identity;
+extern const QuaternionWS quatws_identity;
extern const Vector vec3_invalid;
-extern const int nanmask;
+extern const int nanmask;
#define IS_NAN(x) (((*(int *)&x)&nanmask)==nanmask)
diff --git a/public/variant.h b/public/variant.h
index ba49da2f..10104007 100644
--- a/public/variant.h
+++ b/public/variant.h
@@ -839,7 +839,7 @@ inline bool CVariantBase::AssignTo( VectorWS *pDest ) const
{
switch(m_type)
{
- case FIELD_VOID: *pDest = VectorWS( vec3_origin.x, vec3_origin.y, vec3_origin.z ); return false;
+ case FIELD_VOID: *pDest = vec3ws_origin; return false;
case FIELD_POSITION_VECTOR: *pDest = *m_pVectorWS; return true;
case FIELD_VECTOR: *pDest = *(VectorWS *)m_pVector; return true;
case FIELD_CSTRING: