From: Esko Kokkonen Date: Sat, 1 May 2010 14:23:23 +0000 (+0300) Subject: merge_planets: Calculate new color for the remaining planet X-Git-Url: http://git.itanic.dy.fi/?p=sdl-planets;a=commitdiff_plain;h=2295e56851607fe4e23c5b5101adc20e68e29b0c merge_planets: Calculate new color for the remaining planet --- diff --git a/planet.c b/planet.c index 2482dd9..a79c085 100644 --- a/planet.c +++ b/planet.c @@ -235,15 +235,21 @@ int gravitize_planets(struct planet *a, struct planet *b, const double time) static void _merge_planets(struct planet *a, struct planet *b) { struct vector pa, pb, p; + float mass; vector_scale(&a->speed, a->mass, &pa); vector_scale(&b->speed, b->mass, &pb); vector_add(&pa, &pb, &p); + mass = a->mass + b->mass; if (a->mass < b->mass) a->pos = b->pos; - a->mass += b->mass; + a->r = (a->r * a->mass + b->r * b->mass) / mass; + a->g = (a->g * a->mass + b->g * b->mass) / mass; + a->b = (a->b * a->mass + b->b * b->mass) / mass; + + a->mass = mass; reshape_planet(a); vector_div(&p, a->mass, &a->speed); }