00001 00002 // engine.h // 00003 // ---------- // 00004 // begin : Tue Nov 4 2003 // 00005 // copyright : (C) 2003 by cbaudry (CEA/DSM/SPP) // 00006 // email : cedric.baudry@tremplin-utc.fr // 00008 00010 // // 00011 // This program is free software; you can redistribute it and/or modify // 00012 // it under the terms of the GNU General Public License as published by // 00013 // the Free Software Foundation, version 2 of the License // 00014 // // 00016 00017 #pragma once 00018 00019 #include "figures.h" 00020 #include "camera.h" 00021 #include "lighting.h" 00022 #include "mouse.h" 00023 #include "tesspoly.h" 00024 #include "structure.h" 00025 #include <sys/timeb.h> //ftime serves to chronometer an event 00026 00027 00028 #define MAX_POINTS_PER_FACE 4096 00029 00030 00040 class Engine 00041 { 00042 00043 private : 00044 00045 TessPoly *tessPoly; 00046 struct timeb tstart; 00047 00048 public : 00049 00050 Lighting *lighting; 00051 Figures * figures; 00052 Mouse * mouse ; 00053 00054 00055 Engine(); 00056 ~Engine(); 00057 00058 int axisSize; 00059 00060 bool drawAxis; 00061 bool drawEdges; 00062 bool drawMaterial; 00063 bool drawBoundingBox; 00064 bool drawSpot; 00065 bool ready; 00066 00067 SCENE *scene; 00068 00069 00070 void drawFace (INDEX_FACE iface, SCENE * s); 00071 void drawObject (INDEX_OBJECT iobject, SCENE * s); 00072 void drawSuperVolume (SVOLUME v, SCENE * s); 00073 void drawScene (SCENE * s); 00074 00075 void display (int); 00076 00077 void startTimer (void); 00078 void stopTimer (const char *msg); 00079 00080 int loadFile (const char *fileName); 00081 00082 00083 void setOrthoProjection (double x1, double y1, double x2, double y2); 00084 void xyzview(int param); 00085 00086 00087 }; 00088