diff options
Diffstat (limited to 'Source/Models.h')
| -rw-r--r-- | Source/Models.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Source/Models.h b/Source/Models.h new file mode 100644 index 0000000..2cde5e7 --- /dev/null +++ b/Source/Models.h @@ -0,0 +1,60 @@ +#ifndef _MODELS_H_ +#define _MODELS_H_ + +/**> Model Loading <**/ +// +// Model Maximums +// +#include "Quaternions.h" +#include <gl.h> +#include <glu.h> +#include "Files.h" +#include "Constants.h" + +#define max_textured_triangle 400 // maximum number of texture-filled triangles in a model +#define max_model_vertex max_textured_triangle*3 // maximum number of vertexs + + +// +// Model Structures +// + +class TexturedTriangle{ + public: + short vertex[3]; + float r,g,b; +}; + +class Model{ + public: + short vertexNum,TriangleNum; + + XYZ vertex[max_model_vertex]; + XYZ normals[max_textured_triangle]; + TexturedTriangle Triangles[max_textured_triangle]; + GLfloat vArray[max_textured_triangle*27]; + + XYZ boundingspherecenter; + float boundingsphereradius; + int LineCheck(XYZ p1,XYZ p2, XYZ *p); + int LineCheck2(XYZ p1,XYZ p2, XYZ *p,XYZ move,float rotate); + int LineCheck2(XYZ *p1,XYZ *p2, XYZ *p,XYZ *move,float *rotate); + int LineCheck3(XYZ p1,XYZ p2, XYZ *p,XYZ move,float rotate,float *d); + + void UpdateVertexArray(); + bool load(Str255 Name); + void Scale(float xscale,float yscale,float zscale); + void ScaleNormals(float xscale,float yscale,float zscale); + void Translate(float xtrans,float ytrans,float ztrans); + void CalculateNormals(); + void draw(); + void draw(float r,float g,float b); + void draw(float r,float g,float b, float o); + void draw(float r,float g,float b, float x, float y, float z); + void Rotate(float xang,float yang,float zang); + void MultColor(float howmuch); + + XYZ boundingboxmin,boundingboxmax; +}; + +#endif
\ No newline at end of file |
