Explorar o código

Add operator[] to Quaternion

Daniele Bartolini %!s(int64=12) %!d(string=hai) anos
pai
achega
eda8aac7ce
Modificáronse 2 ficheiros con 15 adicións e 0 borrados
  1. 3 0
      engine/core/math/MathTypes.h
  2. 12 0
      engine/core/math/Quaternion.h

+ 3 - 0
engine/core/math/MathTypes.h

@@ -98,6 +98,9 @@ struct Quaternion
 	Quaternion(float nx, float ny, float nz, float nw);
 	Quaternion(const Vector3& axis, float angle);
 
+	float& operator[](uint32_t i);
+	const float& operator[](uint32_t i) const;
+
 	Quaternion& operator*=(const Quaternion& a);
 
 	float x, y, z, w;

+ 12 - 0
engine/core/math/Quaternion.h

@@ -166,6 +166,18 @@ inline Quaternion::Quaternion(const Vector3& axis, float angle)
 {
 }
 
+//-----------------------------------------------------------------------------	
+inline float& Quaternion::operator[](uint32_t i)
+{
+	return (&x)[i];
+}
+
+//-----------------------------------------------------------------------------	
+inline const float& Quaternion::operator[](uint32_t i) const
+{
+	return (&x)[i];
+}
+
 //-----------------------------------------------------------------------------
 inline Quaternion& Quaternion::operator*=(const Quaternion& a)
 {