00001 #ifndef X3DTK_GL_SCENEGRAPHTYPES_H
00002 #define X3DTK_GL_SCENEGRAPHTYPES_H
00003
00004 #include "X3DTypes.h"
00005
00006 #include <list>
00007 #include <vector>
00008
00009 namespace X3DTK {
00010 namespace GL {
00011
00012 class X3DNode;
00013
00020 struct N3F_V3F
00021 {
00022 SFVec3f normal;
00023 SFVec3f vertex;
00024
00025 friend bool operator== (const N3F_V3F &v1, const N3F_V3F &v2);
00026 };
00027
00034 struct C4F_N3F_V3F
00035 {
00036 SFColorRGBA color;
00037 SFVec3f normal;
00038 SFVec3f vertex;
00039
00040 friend bool operator== (const C4F_N3F_V3F &v1, const C4F_N3F_V3F &v2);
00041 };
00042
00049 struct T2F_C4F_N3F_V3F
00050 {
00051 SFVec2f texCoord;
00052 SFColorRGBA color;
00053 SFVec3f normal;
00054 SFVec3f vertex;
00055
00056 friend bool operator== (const T2F_C4F_N3F_V3F &v1, const T2F_C4F_N3F_V3F &v2);
00057 };
00058
00065 struct T2F_N3F_V3F
00066 {
00067 SFVec2f texCoord;
00068 SFVec3f normal;
00069 SFVec3f vertex;
00070
00071 friend bool operator== (const T2F_N3F_V3F &v1, const T2F_N3F_V3F &v2);
00072 };
00073
00080 typedef struct
00081 {
00082 unsigned char r, g, b, a;
00083 SFVec3f vertex;
00084 } C4UB_V3F;
00085
00086
00092 inline bool operator== (const N3F_V3F &v1, const N3F_V3F &v2)
00093 {
00094 return ((v1.vertex == v2.vertex) && (v1.normal == v2.normal));
00095 }
00096
00102 inline bool operator== (const C4F_N3F_V3F &v1, const C4F_N3F_V3F &v2)
00103 {
00104 return ((v1.vertex == v2.vertex) && (v1.normal == v2.normal) && (v1.color == v2.color));
00105 }
00106
00112 inline bool operator== (const T2F_N3F_V3F &v1, const T2F_N3F_V3F &v2)
00113 {
00114 return ((v1.vertex == v2.vertex) && (v1.normal == v2.normal) && (v1.texCoord == v2.texCoord));
00115 }
00116
00122 inline bool operator== (const T2F_C4F_N3F_V3F &v1, const T2F_C4F_N3F_V3F &v2)
00123 {
00124 return ((v1.vertex == v2.vertex) && (v1.normal == v2.normal) && (v1.color == v2.color) && (v1.texCoord == v2.texCoord));
00125 }
00126
00127 }
00128 }
00129
00130 #endif