X-Git-Url: https://git.cworth.org/git?p=akamaru;a=blobdiff_plain;f=main.c;h=3b1d8d43c108e27e4d431a47d3c930b20e20e1e0;hp=39cb5ad1158a64535661f33fb6221138f74ca51d;hb=4be5b6593af8db64cd39dba290a2c64193bcdabd;hpb=ac886f983a984a951187fae89c530858013ef118 diff --git a/main.c b/main.c index 39cb5ad..3b1d8d4 100644 --- a/main.c +++ b/main.c @@ -63,8 +63,6 @@ model_init_snake (Model *model) model->sticks[i * 2 + 1].length = random() % 20 + 20; } } - - model->anchor_object = NULL; } static void @@ -91,8 +89,6 @@ model_init_rope (Model *model) model->sticks[i].length = stick_length; } } - - model->anchor_object = NULL; } static void @@ -138,15 +134,13 @@ model_init_curtain (Model *model) model->offsets[0].objects[i] = &model->objects[i * num_rope_objects]; } - - model->anchor_object = NULL; } static void model_init_grid (Model *model) { - const int num_ropes = 4; - const int num_rope_objects = 4; + const int num_ropes = 8; + const int num_rope_objects = 8; const int num_objects = num_ropes * num_rope_objects; const int num_strings = num_ropes * (num_rope_objects - 1) + (num_ropes - 1) * num_rope_objects; @@ -186,8 +180,6 @@ model_init_grid (Model *model) model->offsets[0].objects[i] = &model->objects[i * num_rope_objects]; } - - model->anchor_object = NULL; } static void @@ -281,13 +273,17 @@ model_init_dock (Model *model) model->num_springs = num_springs; model->spacers = g_new (Spacer, num_spacers); model->num_spacers = num_spacers; + model->anchors = g_new (Anchor, 1); + model->num_anchors = 1; model->k = 0.1; - model_init_polygons (model); model->polygons = g_new (Polygon, 1); - polygon_init_rectangle (&model->polygons[0], -400, 300, 1400, 350); model->num_polygons = 1; + polygon_init_rectangle (&model->polygons[0], -400, 300, 1400, 350); + model->anchors[0].x = 300; + model->anchors[0].y = 300; + model->anchors[0].object = &model->objects[0]; object = model->objects; spring = model->springs; @@ -528,10 +524,10 @@ button_press_event (GtkWidget *widget, if (event->button != 1) return TRUE; - closure->model->anchor_position.x = event->x; - closure->model->anchor_position.y = event->y; - closure->model->anchor_object = model_find_nearest (closure->model, - event->x, event->y); + closure->model->mouse_anchor.x = event->x; + closure->model->mouse_anchor.y = event->y; + closure->model->mouse_anchor.object = + model_find_nearest (closure->model, event->x, event->y); return TRUE; } @@ -546,7 +542,7 @@ button_release_event (GtkWidget *widget, if ((event->state & GDK_BUTTON1_MASK) == 0) return TRUE; - closure->model->anchor_object = NULL; + closure->model->mouse_anchor.object = NULL; return TRUE; } @@ -562,8 +558,8 @@ motion_notify_event (GtkWidget *widget, gdk_window_get_pointer (event->window, &x, &y, &state); - closure->model->anchor_position.x = x + 0.5; - closure->model->anchor_position.y = y + 0.5; + closure->model->mouse_anchor.x = x + 0.5; + closure->model->mouse_anchor.y = y + 0.5; return TRUE; }