Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/bullet2/src/LinearMath/btQuadWord.h')
-rw-r--r--extern/bullet2/src/LinearMath/btQuadWord.h71
1 files changed, 37 insertions, 34 deletions
diff --git a/extern/bullet2/src/LinearMath/btQuadWord.h b/extern/bullet2/src/LinearMath/btQuadWord.h
index 961ac484d20..2e80fc2ca47 100644
--- a/extern/bullet2/src/LinearMath/btQuadWord.h
+++ b/extern/bullet2/src/LinearMath/btQuadWord.h
@@ -17,19 +17,31 @@ subject to the following restrictions:
#define SIMD_QUADWORD_H
#include "btScalar.h"
+#include "btMinMax.h"
+#include <math.h>
+///The btQuadWordStorage class is base class for btVector3 and btQuaternion.
+///Some issues under PS3 Linux with IBM 2.1 SDK, gcc compiler prevent from using aligned quadword. todo: look into this
+///ATTRIBUTE_ALIGNED16(class) btQuadWordStorage
+class btQuadWordStorage
+{
+protected:
+
+ btScalar m_x;
+ btScalar m_y;
+ btScalar m_z;
+ btScalar m_unusedW;
+
+public:
+
+};
+
///btQuadWord is base-class for vectors, points
-class btQuadWord
+class btQuadWord : public btQuadWordStorage
{
- protected:
- btScalar m_x;
- btScalar m_y;
- btScalar m_z;
- btScalar m_unusedW;
-
public:
// SIMD_FORCE_INLINE btScalar& operator[](int i) { return (&m_x)[i]; }
@@ -61,6 +73,8 @@ class btQuadWord
SIMD_FORCE_INLINE operator btScalar *() { return &m_x; }
SIMD_FORCE_INLINE operator const btScalar *() const { return &m_x; }
+
+
SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z)
{
m_x=x;
@@ -89,47 +103,36 @@ class btQuadWord
{
}
- SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z)
- :m_x(x),m_y(y),m_z(z)
- //todo, remove this in release/simd ?
- ,m_unusedW(btScalar(0.))
+ SIMD_FORCE_INLINE btQuadWord(const btQuadWordStorage& q)
{
+ *((btQuadWordStorage*)this) = q;
+ }
+
+ SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z)
+ {
+ m_x = x, m_y = y, m_z = z, m_unusedW = 0.0f;
}
SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w)
- :m_x(x),m_y(y),m_z(z),m_unusedW(w)
{
+ m_x = x, m_y = y, m_z = z, m_unusedW = w;
}
SIMD_FORCE_INLINE void setMax(const btQuadWord& other)
{
- if (other.m_x > m_x)
- m_x = other.m_x;
-
- if (other.m_y > m_y)
- m_y = other.m_y;
-
- if (other.m_z > m_z)
- m_z = other.m_z;
-
- if (other.m_unusedW > m_unusedW)
- m_unusedW = other.m_unusedW;
+ btSetMax(m_x, other.m_x);
+ btSetMax(m_y, other.m_y);
+ btSetMax(m_z, other.m_z);
+ btSetMax(m_unusedW, other.m_unusedW);
}
SIMD_FORCE_INLINE void setMin(const btQuadWord& other)
{
- if (other.m_x < m_x)
- m_x = other.m_x;
-
- if (other.m_y < m_y)
- m_y = other.m_y;
-
- if (other.m_z < m_z)
- m_z = other.m_z;
-
- if (other.m_unusedW < m_unusedW)
- m_unusedW = other.m_unusedW;
+ btSetMin(m_x, other.m_x);
+ btSetMin(m_y, other.m_y);
+ btSetMin(m_z, other.m_z);
+ btSetMin(m_unusedW, other.m_unusedW);
}