/* atlantis --- Shows moving 3D sea animals */ /* Copyright (c) E. Lassauge, 1998. */ /* * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation. * * This file is provided AS IS with no warranties of any kind. The author * shall have no liability with respect to the infringement of copyrights, * trade secrets or any patents by this file or any part thereof. In no * event will the author be liable for any lost revenue or profits or * other special, indirect and consequential damages. * * The original code for this mode was written by Mark J. Kilgard * as a demo for openGL programming. * * Porting it to xlock was possible by comparing the original Mesa's morph3d * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna * (look at morph3d.c) for his indirect help. * * Thanks goes also to Brian Paul for making it possible and inexpensive * to use OpenGL at home. * * My e-mail address is lassauge@users.sourceforge.net * * Eric Lassauge (May-13-1998) * */ /** * (c) Copyright 1993, 1994, Silicon Graphics, Inc. * ALL RIGHTS RESERVED * Permission to use, copy, modify, and distribute this software for * any purpose and without fee is hereby granted, provided that the above * copyright notice appear in all copies and that both the copyright notice * and this permission notice appear in supporting documentation, and that * the name of Silicon Graphics, Inc. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. * * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. * * US Government Users Restricted Rights * Use, duplication, or disclosure by the Government is subject to * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph * (c)(1)(ii) of the Rights in Technical Data and Computer Software * clause at DFARS 252.227-7013 and/or in similar or successor * clauses in the FAR or the DOD or NASA FAR Supplement. * Unpublished-- rights reserved under the copyright laws of the * United States. Contractor/manufacturer is Silicon Graphics, * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. * * OpenGL(TM) is a trademark of Silicon Graphics, Inc. */ #ifdef HAVE_CONFIG_H # include "config.h" #endif /* HAVE_CONFIG_H */ #ifdef STANDALONE # include # include "screenhackI.h" # ifndef HAVE_JWXYZ # include # include # endif #else # include "xlock.h" #endif #ifdef HAVE_ANDROID #include #endif #ifdef HAVE_JWZGLES # include "jwzgles.h" #endif /* HAVE_JWZGLES */ #define RAD 57.295 #define RRAD 0.01745 /* default values */ #define NUM_SHARKS 4 #define SHARKSPEED 100 #define SHARKSIZE 6000 typedef struct _fishRec { float x, y, z, phi, theta, psi, v; float xt, yt, zt; float htail, vtail; float dtheta; int spurt, attack; int sign; } fishRec; typedef struct { GLint WinH, WinW; GLXContext *glx_context; int num_sharks; float sharkspeed, whalespeed; int sharksize; int wire; Bool whaledir; fishRec *sharks; fishRec momWhale; fishRec babyWhale; fishRec dolph; XImage *texture; /* water distortion overlay bits */ } atlantisstruct; extern void FishTransform(fishRec *); extern void WhalePilot(fishRec *, float, Bool); extern void SharkPilot(fishRec *, float); extern void SharkMiss(atlantisstruct *, int); extern void DrawWhale(fishRec *, int); extern void DrawShark(fishRec *, int); extern void DrawDolphin(fishRec *, int);