X-Git-Url: https://git.ucc.asn.au/?p=atyndall%2Fcits2231.git;a=blobdiff_plain;f=types.h;h=56cb1fa5da949db9e8dd3098f3954c193b0ab3da;hp=573418d241b3f2d55e45a9f479580adb84334820;hb=7fa1021e8712a2d60f4485dd60f73d99e9602bf2;hpb=d3465c5cd0e6e9b414e669e8c8aa464b03f2fd24 diff --git a/types.h b/types.h index 573418d..56cb1fa 100644 --- a/types.h +++ b/types.h @@ -34,12 +34,37 @@ typedef struct { GLubyte *rgbData; // Array of bytes with the colour data for the texture } texture; +// A type for point data typedef struct { - // You'll need to add scale, rotation, material, mesh number, etc., - // to this structure - float x,y,z; + GLfloat x, y, z; // Amount of rotation on axis +} point; + +// A type for texture id/scale data +typedef struct { + int id; + GLfloat scale; +} texturedat; + +// A type to maintain the state of an object in the scene +typedef struct { + 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 @@ -65,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