X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=universe.h;h=07cf7f02b28b50de0731fdca10ad52f41451ecc2;hb=599bf3fa2eb01b05ec677b628e65adb2fe4f91c3;hp=f87f112b19df77c50348cb0d13eb77dace74933e;hpb=1772e738e79ad97347552ea29ee041440d9e60cb;p=universe.git diff --git a/universe.h b/universe.h index f87f112..07cf7f0 100644 --- a/universe.h +++ b/universe.h @@ -9,32 +9,29 @@ #include #include "misc.h" +#include "canvas.h" #include "polygon.h" #ifdef X11_SUPPORT #include "simple_window.h" #endif -#ifdef CAIRO_SUPPORT -#include -#endif - using namespace std; class Universe { - scalar_t _xmax, _ymax; + scalar_t _width, _height; public: int _nb_max_polygons, _nb_polygons; Polygon **_polygons; - inline scalar_t width() { return _xmax; } - inline scalar_t height() { return _ymax; } + inline scalar_t width() { return _width; } + inline scalar_t height() { return _height; } - Universe(int nb_max_polygons, scalar_t xmax, scalar_t ymax); + Universe(int nb_max_polygons, scalar_t width, scalar_t height); // The destructor deletes all the added polygons ~Universe(); - void initialize(Polygon *p); + void initialize_polygon(Polygon *p); void clear(); void add_polygon(Polygon *p); bool collide(Polygon *p); @@ -42,20 +39,23 @@ public: // Compute collisions between projections of the polygons on a few // axis to speed up the computation void compute_pseudo_collisions(int nb_axis, int *nb_colliding_axis); + void apply_gravity(scalar_t dt, scalar_t fx, scalar_t fy); void apply_collision_forces(scalar_t dt); bool update(scalar_t dt); Polygon *pick_polygon(scalar_t x, scalar_t y); +#ifdef XFIG_SUPPORT void print_xfig(XFigTracer *tracer); +#endif #ifdef X11_SUPPORT void draw(SimpleWindow *window); #endif #ifdef CAIRO_SUPPORT - void draw(cairo_t *context_resource); -#endif + void draw(Canvas *canvas); }; +#endif #endif