X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Flavalite.c;h=b1604a2212829b623850e7be27dde2a78cc2f831;hp=7e422ad6c0918d8452bfde98643cb85ffb9ca152;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hpb=d6b0217f2417bd19187f0ebc389d6c5c2233b11c diff --git a/hacks/glx/lavalite.c b/hacks/glx/lavalite.c index 7e422ad6..b1604a22 100644 --- a/hacks/glx/lavalite.c +++ b/hacks/glx/lavalite.c @@ -1,6 +1,6 @@ /* lavalite --- 3D Simulation a Lava Lite, written by jwz. * - * This software Copyright (c) 2002-2014 Jamie Zawinski + * This software Copyright (c) 2002-2017 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -1274,14 +1274,7 @@ init_lavalite (ModeInfo *mi) lavalite_configuration *bp; int wire = MI_IS_WIREFRAME(mi); - if (!bps) { - bps = (lavalite_configuration *) - calloc (MI_NUM_SCREENS(mi), sizeof (lavalite_configuration)); - if (!bps) { - fprintf(stderr, "%s: out of memory\n", progname); - exit(1); - } - } + MI_INIT (mi, bps, NULL); bp = &bps[MI_SCREEN(mi)]; @@ -1375,17 +1368,13 @@ init_lavalite (ModeInfo *mi) False); bp->trackball = gltrackball_init (False); - /* move initial camera position up by around 15 degrees: - in other words, tilt the scene toward the viewer. */ - gltrackball_start (bp->trackball, 50, 50, 100, 100); - gltrackball_track (bp->trackball, 50, 5, 100, 100); - - /* Oh, but if it's the "Giant" model, tilt the scene away: make it - look like we're looking up at it instead of down at it! */ - if (bp->style == GIANT) - gltrackball_track (bp->trackball, 50, -12, 100, 100); - else if (bp->style == ROCKET) /* same for rocket, but not as much */ - gltrackball_track (bp->trackball, 50, -4, 100, 100); + /* Tilt the scene a bit: lean the normal lamps toward the viewer, + and the huge lamps away. */ + gltrackball_reset (bp->trackball, + -0.3 + frand(0.6), + (bp->style == ROCKET || bp->style == GIANT + ? frand (0.2) + : -frand (0.6))); } switch (bp->style) @@ -1496,6 +1485,9 @@ draw_lavalite (ModeInfo *mi) gltrackball_rotate (bp->trackball); /* Apply mouse-based camera position */ + glRotatef (-90, 1, 0, 0); /* Right side up */ + + /* Place the lights relative to the object, before the object has been rotated or wandered within the scene. */ glLightfv(GL_LIGHT0, GL_POSITION, light0_pos);