home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 27 / IOPROG_27.ISO / SOFT / CDX.ZIP / Src / C3d / C3D.h next >
Encoding:
C/C++ Source or Header  |  1998-09-10  |  4.6 KB  |  157 lines

  1. //////////////////////////////////////////////////////////////////////////////////
  2. // Project Name: [ C3D Class Library - C3D.lib ]
  3. // Author:       [ Dan Farley - 97308096@brookes.ac.uk ]
  4. // Source File:  [ Main Header File ]
  5. // Revision:     [ 1.6 ]
  6. //////////////////////////////////////////////////////////////////////////////////
  7. #ifndef C3D_H
  8. #define C3D_H
  9.  
  10. #define D3D_OVERLOADS
  11.  
  12. #include <stdio.h>
  13. #include <ddraw.h>
  14. #include <d3d.h>
  15.  
  16. //////////////////////////////////////////////////////////////////////////////////
  17. // Definied Types
  18. //////////////////////////////////////////////////////////////////////////////////
  19. #define RELEASE(x) if(x != NULL) { x->Release(); x = NULL; }
  20. #define SAFEDELETE(x) if(x != NULL) { delete x; x = NULL; }
  21.  
  22. class C3D_Vertex;
  23.  
  24. //////////////////////////////////////////////////////////////////////////////////
  25. // C3D_Matrix class
  26. //////////////////////////////////////////////////////////////////////////////////
  27. class C3D_Matrix : public D3DMATRIX
  28. {
  29. public:
  30.     C3D_Matrix(void);
  31.  
  32.     C3D_Matrix operator = (const C3D_Matrix&);
  33.     C3D_Matrix operator + (const C3D_Matrix&);
  34.     C3D_Matrix operator - (const C3D_Matrix&);
  35.  
  36.     void Zero(void);
  37.     void Identity(void);
  38.     void Translate(float x, float y, float z);
  39.     void Scale(float x, float y, float z);
  40.     void Scale(float scale);
  41.     void RotateX(float x);
  42.     void RotateY(float y);
  43.     void RotateZ(float z);
  44.     void Print(void);
  45.  
  46.     void SetView(D3DVECTOR, D3DVECTOR, D3DVECTOR, float);
  47.     void SetProjection(float near, float far, float fov);
  48. };
  49.  
  50. //////////////////////////////////////////////////////////////////////////////////
  51. // C3D_Vector Class
  52. //////////////////////////////////////////////////////////////////////////////////
  53. class C3D_Vector : public D3DVECTOR
  54. {
  55. public:
  56.     C3D_Vector(void);
  57.     C3D_Vector(float);
  58.     C3D_Vector(float, float, float);
  59.     C3D_Vector(C3D_Vector*);
  60.  
  61.     C3D_Vector& operator = (const C3D_Vector&);
  62.     C3D_Vector& operator = (const D3DVECTOR&);
  63.     C3D_Vector& operator + (const C3D_Vector&);
  64.     C3D_Vector& operator + (const C3D_Vertex&);
  65.     C3D_Vector& operator - (const C3D_Vector&);
  66.  
  67.     void Normalize(void);
  68.     void Normal(C3D_Vertex*, C3D_Vertex*, C3D_Vertex*);
  69.     void CrossProduct(C3D_Vector*, C3D_Vector*);
  70.     float DotProduct(C3D_Vector*, C3D_Vector*);
  71.  
  72.     void Locate(float, float, float);
  73.     void Print(void);
  74.  
  75.     void SetX(float _x) { x = _x; }
  76.     void SetY(float _y) { y = _y; }
  77.     void SetZ(float _z) { z = _z; }
  78.  
  79.     float GetX() { return x; }
  80.     float GetY() { return y; }
  81.     float GetZ() { return z; }
  82. };
  83.  
  84. //////////////////////////////////////////////////////////////////////////////////
  85. // C3D_Vertex Class
  86. //////////////////////////////////////////////////////////////////////////////////
  87. class C3D_Vertex : public D3DLVERTEX
  88. {
  89. public:
  90.     C3D_Vertex(void);
  91.     C3D_Vertex(float x, float y, float z);
  92.     C3D_Vertex(float x, float y, float z, DWORD color, DWORD specular);
  93.     C3D_Vertex(float x, float y, float z, DWORD color, DWORD specular, float tu, float tv);
  94.     C3D_Vertex(C3D_Vertex* vertex);
  95.  
  96.     C3D_Vertex& operator = (const C3D_Vertex&);
  97.     C3D_Vertex& operator + (const C3D_Vertex&);
  98.     C3D_Vertex& operator + (const C3D_Vector&);
  99.     C3D_Vertex& operator - (const C3D_Vertex&);
  100.  
  101.     void Locate(float x, float y, float z);
  102.     void Transform(C3D_Matrix* matrix);
  103.     void Print(void);
  104.  
  105.     void SetX(float _x) { x = _x; }
  106.     void SetY(float _y) { y = _y; }
  107.     void SetZ(float _z) { z = _z; }
  108.     void SetU(float _tu) { tu = _tu; }
  109.     void SetV(float _tv) { tv = _tv; }
  110.     void SetColor(DWORD c) { color = c; }
  111.     void SetSpecular(DWORD s) { specular = s; }
  112.  
  113.     float GetX() { return x; }
  114.     float GetY() { return y; }
  115.     float GetZ() { return z; }
  116.     float GetU() { return tu; }
  117.     float GetV() { return tv; }
  118.     DWORD GetColor() { return color; }
  119.     DWORD GetSpecular() { return specular; }
  120. };
  121.  
  122. //////////////////////////////////////////////////////////////////////////////////
  123. // C3D_Mesh Class
  124. //////////////////////////////////////////////////////////////////////////////////
  125. class C3D_Mesh
  126. {
  127. public:
  128.     C3D_Mesh(void);
  129.     ~C3D_Mesh(void);
  130.  
  131.     void CreateCube(float w, float h, float d);
  132.     void CreateSphere(void);
  133.     void CreateTerrain(void);
  134.  
  135.     void SetPosition(float x, float y, float z);
  136.     void SetHeading(float x, float y, float z);
  137.  
  138.     void SetRoll(float roll) { m_Roll = roll; }
  139.     void SetPitch(float pitch) { m_Pitch = pitch; }
  140.     void SetYaw(float yaw) { m_Yaw = yaw; }
  141.  
  142. public:
  143.     C3D_Vertex m_Position;
  144.     C3D_Vertex m_Heading;
  145.     C3D_Matrix m_Transform;
  146.  
  147.     float m_Roll;
  148.     float m_Pitch;
  149.     float m_Yaw;
  150.  
  151.     int m_VertexCount;
  152.     int m_IndexCount;
  153.     WORD* m_Indices;
  154.     C3D_Vertex* m_Vertices;
  155. };
  156.  
  157. #endif