(no commit message)
[atyndall/cits2231.git] / types.h
diff --git a/types.h b/types.h
index 197eb03..56cb1fa 100644 (file)
--- a/types.h
+++ b/types.h
@@ -34,22 +34,37 @@ typedef struct {
     GLubyte *rgbData;   // Array of bytes with the colour data for the texture
 } texture;
 
+// A type for point data
+typedef struct {
+    GLfloat x, y, z;    // Amount of rotation on axis
+} point;
 
-typedef GLfloat vector[3]; // Vector datatyle
-
+// A type for texture id/scale data
 typedef struct {
-    GLfloat parameter;  // Transform amount
-    vector* vect;        // Transform vector
-} transform;
+    int id;
+    GLfloat scale;
+} texturedat;
 
+// A type to maintain the state of an object in the scene
 typedef struct {
-    int mesh;           // Mesh index number
-    int texture;        // Texture index number
-    float x,y,z;        // Scene position
-    vector* scale;       // Scale vector
-    transform rotation; // Rotation transformation
+    int mesh;             // Mesh index number
+    texturedat texture;   // Texture index number
+    GLfloat x,y,z;        // Scene position
+    GLfloat scale[3];     // Scale vector
+    point rotation;       // Rotation transformation
 } SceneObject;
 
+// A type to maintain the state of a light in the scene
+typedef struct {
+    GLfloat position[4];  // Light position
+    GLfloat ambient[4];   // Ambient parameter
+    GLfloat diffuse[4];   // Diffuse parameter
+    GLfloat specular[4];  // Specular parameter
+    GLfloat direction[3]; // Direction parameter
+    GLfloat cutoff;       // Cutoff of light
+    char exponent;        // Light exponent value, 0 - 128
+} LightObject;
+
 // Menu enum
 enum menu {
   // Main menu
@@ -75,5 +90,11 @@ enum menu {
   M_LIGHT_RGBALL_LIGHT_2
 };
 
-#endif /* TYPES_H */
+// Manipulation states
+enum manipulateStates {
+  STATE_CAMERA_ROTATE_MOVE,
+  STATE_OBJECT_POSITION_SCALE,
+  STATE_OBJECT_ROTATION_TEXTURE_SCALE
+};
 
+#endif /* TYPES_H */
\ No newline at end of file

UCC git Repository :: git.ucc.asn.au