Browse Source

Use unary bit operators for binary implementation

Christophe Riccio 9 years ago
parent
commit
b87ead8304
1 changed files with 5 additions and 21 deletions
  1. 5 21
      glm/detail/type_vec4.inl

+ 5 - 21
glm/detail/type_vec4.inl

@@ -790,41 +790,25 @@ namespace detail
 	template <typename T, precision P>
 	template <typename T, precision P>
 	GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec4<T, P> const & v, tvec1<T, P> const & scalar)
 	GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec4<T, P> const & v, tvec1<T, P> const & scalar)
 	{
 	{
-		return tvec4<T, P>(
-			v.x & scalar.x,
-			v.y & scalar.x,
-			v.z & scalar.x,
-			v.w & scalar.x);
+		return tvec4<T, P>(v) &= scalar;
 	}
 	}
 
 
 	template <typename T, precision P>
 	template <typename T, precision P>
 	GLM_FUNC_QUALIFIER tvec4<T, P> operator&(T scalar, tvec4<T, P> const & v)
 	GLM_FUNC_QUALIFIER tvec4<T, P> operator&(T scalar, tvec4<T, P> const & v)
 	{
 	{
-		return tvec4<T, P>(
-			scalar & v.x,
-			scalar & v.y,
-			scalar & v.z,
-			scalar & v.w);
+		return tvec4<T, P>(scalar) &= v;
 	}
 	}
 
 
 	template <typename T, precision P>
 	template <typename T, precision P>
-	GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec1<T, P> const & scalar, tvec4<T, P> const & v)
+	GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec1<T, P> const & v1, tvec4<T, P> const & v2)
 	{
 	{
-		return tvec4<T, P>(
-			scalar.x & v.x,
-			scalar.x & v.y,
-			scalar.x & v.z,
-			scalar.x & v.w);
+		return tvec4<T, P>(v1.x) &= v2;
 	}
 	}
 
 
 	template <typename T, precision P>
 	template <typename T, precision P>
 	GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec4<T, P> const & v1, tvec4<T, P> const & v2)
 	GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec4<T, P> const & v1, tvec4<T, P> const & v2)
 	{
 	{
-		return tvec4<T, P>(
-			v1.x & v2.x,
-			v1.y & v2.y,
-			v1.z & v2.z,
-			v1.w & v2.w);
+		return tvec4<T, P>(v1) &= v2;
 	}
 	}
 
 
 	template <typename T, precision P>
 	template <typename T, precision P>