#define GLOBALS_H
// Defined values
-#define NMESH 54 // The number of meshes (in the models-textures dir)
+#define NMESH 54 // The number of meshes (in the models-textures dir)
#define NTEXTURE 30 // The number of textures (in the models-textures dir)
#define MAXOBJECTS 256
+#define LIGHTS 2 // Number of lights in program
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
// Meshes and textures arrays
extern mesh* meshes[];
extern texture* textures[];
extern int buttonSelected;
extern int manipulateState;
+/* Light object arrays and default values */
+extern LightObject lightObjs[];
+
+extern GLfloat defaultPosition[];
+
+extern GLfloat defaultAmbient[];
+extern GLfloat defaultDiffuse[];
+extern GLfloat defaultSpecular[];
+extern GLfloat defaultDirection[];
+
+extern GLfloat defaultCutoff;
+extern GLfloat defaultExponent;
+
+/* Material types */
+extern GLfloat materialAmbient[];
+extern GLfloat materialDiffuse[];
+extern GLfloat materialSpecular[];
+
+/* Light parameters */
+extern GLfloat lightShine;
+extern GLfloat lightGlobalModel[];
+extern GLfloat lightGlobalEmission[];
+extern GLfloat lightBallSize;
+
// Directories containing models
extern char *dirDefault1;
extern char *dirDefault2;
/* Length of axis lines */
extern GLfloat lineLength;
-/* Light 0 parameters */
-extern GLfloat diffuse0[];
-extern GLfloat ambient0[];
-extern GLfloat specular0[];
-extern GLfloat direction0[];
-
-extern GLfloat lightPosition0[];
-
-extern float lightAngle0, lightHeight0;
-extern int lightMoving0, lightStartX0, lightStartY0;
-
-/* Light 1 parameters */
-extern GLfloat diffuse1[];
-extern GLfloat ambient1[];
-extern GLfloat specular1[];
-extern GLfloat direction1[];
-
-extern GLfloat lightPosition1[];
-
-extern float lightAngle1, lightHeight1;
-extern int lightMoving1, lightStartX1, lightStartY1;
-
-/* Material types */
-extern GLfloat ambient[];
-extern GLfloat diffuse[];
-extern GLfloat specular[];
-extern GLfloat shine;
-extern GLfloat glightmodel[];
-extern GLfloat emission[];
-
/* Beginning width, height */
extern int width, height;
/* Zoom and rotate tracking */
extern GLfloat zoom, rotate, camAngle;
-extern GLfloat zoomFactor, rotateFactor, camAngleFactor;
-extern GLfloat leftrightFactor, nearfarFactor, bigsmallFactor, updownFactor;
+extern GLfloat zoomFactor, camRotateFactor, camAngleFactor;
+extern GLfloat leftrightFactor, nearfarFactor, bigsmallFactor;
+extern GLfloat updownFactor, rotateFactor, texscaleFactor;
/* Texture state tracking */
extern int currentGroundTexture, currentMeshTexture;