From 48f2a54d99885de03c52451ec2fb546ac35d78ab Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C5=82=20D=C5=82ugo=C5=82=C4=99cki?= Date: Fri, 23 Jan 2015 21:27:05 +0100 Subject: [PATCH] Use position calculate method in rendering individual. --- src/ui/drawing_area.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ui/drawing_area.c b/src/ui/drawing_area.c index ee915e9..8eefe5f 100644 --- a/src/ui/drawing_area.c +++ b/src/ui/drawing_area.c @@ -5,6 +5,7 @@ #include "../debug.h" #include "drawing_area.h" +#include "../math/3d.h" #include "../graphics/constants.h" #include "../graphics/individual.h" #include "../graphics/family.h" @@ -26,6 +27,8 @@ gboolean drawing_area_draw(GtkWidget *widget, cairo_t *cr, gpointer user_data) unsigned int i; unsigned int individuals_no; unsigned int families_no; + struct familia_storage * storage; + struct position * pos; /*** OpenGL BEGIN ***/ if (!gtk_widget_begin_gl (widget)) { @@ -38,17 +41,29 @@ gboolean drawing_area_draw(GtkWidget *widget, cairo_t *cr, gpointer user_data) gluLookAt (camera_pos_x, camera_pos_y, camera_pos_z, 0.0, 0.0, -100.0, 0.0, 1.0, 0.0); - individuals_no = familia_storage_get_current()->individuals_no; + storage = familia_storage_get_current(); + individuals_no = storage->individuals_no; for (i = 0; i < individuals_no; i++) { + pos = calculate_individual_position(storage->individuals[i]); + glPushMatrix (); - glTranslatef(i * (GR_IND_RADIUS + 1), 0, -10); + glTranslatef( + (pos != NULL) ? pos->x : 0, + (pos != NULL) ? pos->y : 0, + (pos != NULL) ? pos->z : -10 + ); glColor3f (1.0, 1.0, 1.0); graphics_render_individual(); glPopMatrix (); + + if (pos != NULL) { + free(pos); + pos = NULL; + } } - families_no = familia_storage_get_current()->families_no; + families_no = storage->families_no; for (i = 0; i < families_no; i++) { glPushMatrix (); -- 2.30.2