summary refs log tree commit diff
path: root/src/Models.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Models.h')
-rw-r--r--src/Models.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/Models.h b/src/Models.h
new file mode 100644
index 0000000..e49b8f1
--- /dev/null
+++ b/src/Models.h
@@ -0,0 +1,66 @@
+#ifndef _MODELS_H_
+#define _MODELS_H_
+
+/**> Model Loading <**/
+//
+// Model Maximums
+//
+#include "Quaternions.h"
+#ifdef OS9 
+#include <gl.h>
+#include <glu.h>
+#else
+#include <GL/gl.h>
+#include <GL/glu.h>
+#endif
+#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
+