aboutsummaryrefslogtreecommitdiff
path: root/Source/Models.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Models.h')
-rw-r--r--Source/Models.h60
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