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