1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#ifndef C_3DOBJECT_HEADER_FILE
#define C_3DOBJECT_HEADER_FILE
#include <fstream>
#include <vector>
#include "typedefs.h"
class C_3DObject
{
public:
C_3DObject();
C_3DObject(const char* f_strFileName,
char* f_strColorTexName,
MatProps_t f_Material);
C_3DObject(const char* f_strFileName,
GLuint f_uiTexturei,
MatProps_t f_Material);
~C_3DObject();
inline void SetPos(double f_dX, double f_dY, double f_dZ)
{ m_Pos.x = f_dX; m_Pos.y = f_dY; m_Pos.z = f_dZ; }
inline void SetRot(double f_dX, double f_dY, double f_dZ)
{ m_Rot.x = f_dX; m_Rot.y = f_dY; m_Rot.z = f_dZ; }
inline void SetScale(double f_dX, double f_dY, double f_dZ)
{ m_Scale.x = f_dX; m_Scale.y = f_dY; m_Scale.z = f_dZ; }
inline void SetPos(const Vect3D_t &pos)
{ m_Pos = pos; }
inline void SetRot(const Vect3D_t &rot)
{ m_Rot = rot; }
inline void SetScale(const Vect3D_t &scale)
{ m_Scale = scale; }
inline const Vect3D_t& GetPos() { return m_Pos; }
inline const Vect3D_t& GetRot() { return m_Rot; }
inline const Vect3D_t& GetScale() { return m_Scale; }
inline const BoundingBox_t& GetBoundingBox() { return m_BBox; }
inline const BoundingBox_t GetAbsBoundBox() { return m_BBox + m_Pos; }
inline bool Initialized() { return m_bDispListValid; }
void TransRotateScale(); //applies the scaling, translation and rotation
//for this object
virtual void Render(); //renders the object using the current projection
//and modelview matrices
protected:
Vect3D_t m_Pos,
m_Rot,
m_Scale;
BoundingBox_t m_BBox; //bounding box of the object
GLuint m_uiListIndex; //display list index
bool m_bDispListValid;
GLuint m_uiColorTex;
bool m_bOwnTexture;
MatProps_t m_Mat;
bool CreateObject(const char *f_pFilePath);
bool LoadGeometryData(const char *f_pFilePath, Geometry_t &f_Geom);
bool ParseVect3D(const char *f_pInbuffer, Vect3D_t &f_V3);
bool ParseTriangle(const char *f_pInbuffer, Triangle_t &f_triangle);
};
#endif //C_3DOBJECT_HEADER_FILE
|