Ver Fonte

Add operator[] to Quaternion

Daniele Bartolini há 12 anos atrás
pai
commit
eda8aac7ce
2 ficheiros alterados com 15 adições e 0 exclusões
  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(float nx, float ny, float nz, float nw);
 	Quaternion(const Vector3& axis, float angle);
 	Quaternion(const Vector3& axis, float angle);
 
 
+	float& operator[](uint32_t i);
+	const float& operator[](uint32_t i) const;
+
 	Quaternion& operator*=(const Quaternion& a);
 	Quaternion& operator*=(const Quaternion& a);
 
 
 	float x, y, z, w;
 	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)
 inline Quaternion& Quaternion::operator*=(const Quaternion& a)
 {
 {