1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-19 17:09:40 +00:00

Comparison operator for Pose, View, and co.

This commit is contained in:
Mads Buvik Sandvei 2020-06-02 21:45:18 +02:00
parent 4361f4191d
commit 9ad910a8e7
2 changed files with 35 additions and 0 deletions

View file

@ -242,6 +242,19 @@ namespace MWVR
return *this; return *this;
} }
bool Pose::operator==(const Pose& rhs) const
{
return position == rhs.position && orientation == rhs.orientation && velocity == rhs.velocity;
}
bool FieldOfView::operator==(const FieldOfView& rhs) const
{
return angleDown == rhs.angleDown
&& angleUp == rhs.angleUp
&& angleLeft == rhs.angleLeft
&& angleRight == rhs.angleRight;
}
// near and far named with an underscore because of galaxy brain defines in included windows headers. // near and far named with an underscore because of galaxy brain defines in included windows headers.
osg::Matrix FieldOfView::perspectiveMatrix(float near_, float far_) osg::Matrix FieldOfView::perspectiveMatrix(float near_, float far_)
{ {
@ -287,6 +300,21 @@ namespace MWVR
return osg::Matrix(matrix); return osg::Matrix(matrix);
} }
bool PoseSet::operator==(const PoseSet& rhs) const
{
return eye[0] == rhs.eye[0]
&& eye[1] == rhs.eye[1]
&& hands[0] == rhs.hands[0]
&& hands[1] == rhs.hands[1]
&& view[0] == rhs.view[0]
&& view[1] == rhs.view[1]
&& head == rhs.head;
}
bool View::operator==(const View& rhs) const
{
return pose == rhs.pose && fov == rhs.fov;
}
} }
std::ostream& operator <<( std::ostream& operator <<(

View file

@ -52,6 +52,8 @@ namespace MWVR
//! Scale a pose (does not affect orientation) //! Scale a pose (does not affect orientation)
Pose operator*(float scalar); Pose operator*(float scalar);
const Pose& operator*=(float scalar); const Pose& operator*=(float scalar);
bool operator==(const Pose& rhs) const;
}; };
struct FieldOfView { struct FieldOfView {
@ -60,6 +62,8 @@ namespace MWVR
float angleUp; float angleUp;
float angleDown; float angleDown;
bool operator==(const FieldOfView& rhs) const;
osg::Matrix perspectiveMatrix(float near, float far); osg::Matrix perspectiveMatrix(float near, float far);
}; };
@ -67,6 +71,7 @@ namespace MWVR
{ {
Pose pose; Pose pose;
FieldOfView fov; FieldOfView fov;
bool operator==(const View& rhs) const;
}; };
struct PoseSet struct PoseSet
@ -75,6 +80,8 @@ namespace MWVR
Pose eye[2]{}; Pose eye[2]{};
Pose hands[2]{}; Pose hands[2]{};
Pose head{}; Pose head{};
bool operator==(const PoseSet& rhs) const;
}; };
//! Describes what limb to track. //! Describes what limb to track.