summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDennis Peeten <dpeeten@onsneteindhoven.nl>2008-05-06 19:26:07 (GMT)
committerDennis Peeten <dpeeten@onsneteindhoven.nl>2008-05-06 19:26:07 (GMT)
commitd205c9a71a2d3d415cb470c0c148a7541a18ab41 (patch)
tree442ffb732861ffe19872ae389640bdd215e02092
parentd058611bd983ec0339a784a3db16612b4418b000 (diff)
download2iv55-d205c9a71a2d3d415cb470c0c148a7541a18ab41.zip
2iv55-d205c9a71a2d3d415cb470c0c148a7541a18ab41.tar.gz
2iv55-d205c9a71a2d3d415cb470c0c148a7541a18ab41.tar.bz2
typedefs.h vergeten...
-rw-r--r--MatchBloxEngine/MatchBloxEngine/typedefs.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/MatchBloxEngine/MatchBloxEngine/typedefs.h b/MatchBloxEngine/MatchBloxEngine/typedefs.h
new file mode 100644
index 0000000..0262c14
--- /dev/null
+++ b/MatchBloxEngine/MatchBloxEngine/typedefs.h
@@ -0,0 +1,128 @@
+#ifndef TYPEDEFS_H
+
+#define TYPEDEFS_H
+
+#include <vector>
+#include <limits>
+
+typedef struct bb
+{
+ bb() {
+ //init a bounding box with the min values set to max double and visa versa
+ m_dLeft = m_dBottom = m_dFront = std::numeric_limits<double>::max();
+ m_dRight = m_dTop = m_dBack = -std::numeric_limits<double>::max();
+ }
+
+ double m_dLeft, //min x
+ m_dBottom, //min y
+ m_dFront, //min z
+ m_dRight, //max x
+ m_dTop, //max y
+ m_dBack; //max z
+
+} BoundingBox_t;
+
+typedef struct vec3d
+{
+ double x, y, z;
+
+ //constructors
+ vec3d()
+ { x=0.0, y=0.0, z=0.0; }
+ vec3d(double fx, double fy, double fz)
+ { x=fx, y=fy, z=fz; }
+ vec3d(const vec3d &clone)
+ { x=clone.x; y=clone.y; z=clone.z; }
+
+ inline vec3d& operator=(const vec3d &rhs)
+ { x=rhs.x; y=rhs.y; z=rhs.z; return *this; }
+ inline vec3d& operator+=(const vec3d &rhs)
+ { x+=rhs.x; y+=rhs.y; z+=rhs.z; return *this; }
+ inline vec3d& operator-=(const vec3d &rhs)
+ { x-=rhs.x; y-=rhs.y; z-=rhs.z; return *this; }
+ inline vec3d& operator*=(const vec3d &rhs)
+ { x*=rhs.x; y*=rhs.y; z*=rhs.z; return *this; }
+ inline vec3d& operator*=(const double &scal)
+ { x*=scal; y*=scal; z*=scal; return *this; }
+
+ inline const vec3d& operator+(const vec3d &rhs)
+ { return vec3d(*this) += rhs; }
+ inline const vec3d& operator-(const vec3d &rhs)
+ { return vec3d(*this) -= rhs; }
+ inline const vec3d& operator*(const vec3d &rhs)
+ { return vec3d(*this) *= rhs; }
+ inline const vec3d& operator*(const double &scal)
+ { return vec3d(*this) *= scal; }
+} Vect3D_t;
+
+
+
+inline void UpdBBox(BoundingBox_t &B, Vect3D_t &V)
+{
+ if (V.x < B.m_dLeft)
+ B.m_dLeft = V.x;
+ else if (V.x > B.m_dRight)
+ B.m_dRight = V.x;
+ if (V.y < B.m_dBottom)
+ B.m_dBottom = V.y;
+ else if (V.y > B.m_dTop)
+ B.m_dTop = V.y;
+ if (V.z < B.m_dFront)
+ B.m_dFront = V.z;
+ else if (V.z > B.m_dBack)
+ B.m_dBack = V.z;
+};
+
+typedef struct triangle
+{
+ int v1, n1, t1,
+ v2, n2, t2,
+ v3, n3, t3;
+} Triangle_t;
+
+typedef struct mat
+{
+ GLfloat m_fAmb[4],
+ m_fDif[4],
+ m_fSpec[4],
+ m_fEmi[4],
+ m_fShin;
+
+ //default constructor
+ mat()
+ {
+ m_fAmb[0] = m_fAmb[1] = m_fAmb[2] = 0.7f; m_fAmb[3] = 1.0f;
+ m_fDif[0] = m_fDif[1] = m_fDif[3] = 0.7f; m_fDif[3] = 1.0f;
+ m_fSpec[0] = m_fSpec[1] = m_fSpec[2] = m_fSpec[3] = 1.0f;
+ m_fEmi[0] = m_fEmi[1] = m_fEmi[2] = 0.0f; m_fEmi[3] = 1.0f;
+ m_fShin = 128.0f;
+ }
+ //for convenience
+ inline void setAmb(float r, float g, float b, float a)
+ { m_fAmb[0] = r; m_fAmb[1] = g; m_fAmb[2] = b; m_fAmb[3] = a; }
+ inline void setDif(float r, float g, float b, float a)
+ { m_fDif[0] = r; m_fDif[1] = g; m_fDif[2] = b; m_fDif[3] = a; }
+ inline void setSpec(float r, float g, float b, float a)
+ { m_fSpec[0] = r; m_fSpec[1] = g; m_fSpec[2] = b; m_fSpec[3] = a; }
+ inline void setEmi(float r, float g, float b, float a)
+ { m_fEmi[0] = r; m_fEmi[1] = g; m_fEmi[2] = b; m_fEmi[3] = a; }
+
+} MatProps_t;
+/*
+typedef struct facegroup
+{
+ MatProps_t m_material;
+ std::vector<Face_t> m_faces;
+} FaceGroup_t;
+*/
+
+typedef struct geom
+{
+ std::vector<Vect3D_t> m_verts,
+ m_norms,
+ m_texs;
+ std::vector<Triangle_t> m_triangles;
+} Geometry_t;
+
+#endif //TYPEDEFS_H
+