1 #ifndef OPENMW_ESM_UTIL_H
2 #define OPENMW_ESM_UTIL_H
3 
4 #include <osg/Vec3f>
5 #include <osg/Quat>
6 
7 namespace ESM
8 {
9 
10 // format 0, savegames only
11 
12 struct Quaternion
13 {
14     float mValues[4];
15 
QuaternionESM::Quaternion16     Quaternion() {}
17 
QuaternionESM::Quaternion18     Quaternion(const osg::Quat& q)
19     {
20         mValues[0] = q.w();
21         mValues[1] = q.x();
22         mValues[2] = q.y();
23         mValues[3] = q.z();
24     }
25 
operator osg::QuatESM::Quaternion26     operator osg::Quat () const
27     {
28         return osg::Quat(mValues[1], mValues[2], mValues[3], mValues[0]);
29     }
30 };
31 
32 struct Vector3
33 {
34     float mValues[3];
35 
Vector3ESM::Vector336     Vector3() {}
37 
Vector3ESM::Vector338     Vector3(const osg::Vec3f& v)
39     {
40         mValues[0] = v.x();
41         mValues[1] = v.y();
42         mValues[2] = v.z();
43     }
44 
operator osg::Vec3fESM::Vector345     operator osg::Vec3f () const
46     {
47         return osg::Vec3f(mValues[0], mValues[1], mValues[2]);
48     }
49 };
50 
51 }
52 
53 #endif
54