00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_VECTOR_H_H
00027 #define NL_VECTOR_H_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include "nel/misc/vector.h"
00031
00032
00033 namespace NLMISC {
00034
00035
00043 class CVectorH
00044 {
00045 public:
00046
00048 float x, y, z, w;
00049
00051 CVectorH() {}
00053 CVectorH(float _x, float _y, float _z, float _w) : x(_x), y(_y), z(_z), w(_w) {}
00055 CVectorH(const CVectorH &v) : x(v.x), y(v.y), z(v.z), w(v.w) {}
00057 CVectorH(const CVector &v) : x(v.x), y(v.y), z(v.z), w(1.0f) {}
00058
00060 void set(float _x, float _y, float _z, float _w)
00061 {
00062 x=_x; y=_y; z=_z; w=_w;
00063 }
00064
00066 operator CVector() const
00067 {
00068 return CVector( x, y, z );
00069 }
00070
00071
00073
00074 bool operator==(const CVectorH &v) const
00075 {
00076 return x==v.x && y==v.y && z==v.z && w==v.w;
00077 }
00078 bool operator!=(const CVectorH &v) const
00079 {
00080 return !(*this==v);
00081 }
00083 bool operator<(const CVectorH &v) const
00084 {
00085 if(x!=v.x)
00086 return x<v.x;
00087 if(y!=v.y)
00088 return y<v.y;
00089 if(z!=v.z)
00090 return z<v.z;
00091 return w<v.w;
00092 }
00093
00095
00096 };
00097
00098
00099 }
00100
00101
00102 #endif // NL_VECTOR_H_H
00103
00104