1 /**************************************************************************
2 * fg_time.h -- data structures and routines for managing time related stuff.
4 * Written by Curtis Olson, started August 1997.
6 * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2 of the
11 * License, or (at your option) any later version.
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 * (Log is kept at end of this file)
24 **************************************************************************/
40 #include <Include/fg_types.h>
41 #include <Flight/flight.h>
44 /* Define a structure containing global time parameters */
46 /* the date/time in various forms */
47 time_t cur_time; /* Unix "calendar" time in seconds */
48 struct tm *gmt; /* Break down of GMT time */
50 double jd; /* Julian date */
51 double mjd; /* modified Julian date */
53 double gst; /* side real time at prime meridian */
54 double lst; /* local side real time */
56 double gst_diff; /* the difference between the precise
57 sidereal time algorithm result and the
58 course result. course + diff has good
59 accuracy for the short term */
61 long int warp; /* An offset in seconds from the true time.
62 Allows us to adjust the effective time of day. */
64 long int warp_delta; /* How much to change the value of warp each
65 iteration. Allows us to make time
66 progress faster than normal. */
69 extern struct fgTIME cur_time_params;
72 /* Lighting is time dependent so it shows up here */
73 /* Define a structure containing the global lighting parameters */
75 /* position of the sun in various forms */
76 double sun_lon, sun_gc_lat; /* in geocentric coordinates */
77 struct fgCartesianPoint fg_sunpos; /* in cartesian coordiantes */
78 GLfloat sun_vec[4]; /* (in view coordinates) */
79 GLfloat sun_vec_inv[4]; /* inverse (in view coordinates) */
80 double sun_angle; /* the angle between the sun and the
83 /* Derived lighting values */
84 GLfloat scene_ambient[3]; /* ambient component */
85 GLfloat scene_diffuse[3]; /* diffuse component */
86 GLfloat fog_color[4]; /* fog color */
87 GLfloat sky_color[4]; /* clear screen color */
90 extern struct fgLIGHT cur_light_params;
92 typedef struct fg_timestamp_t {
98 /* Portability wrap to get current time. */
99 void timestamp(fg_timestamp *timestamp);
101 /* Return duration in millis from first to last */
102 long timediff(fg_timestamp *first, fg_timestamp *last);
104 /* Return new timestamp given a time stamp and an interval to add in */
105 void timesum(fg_timestamp *res, fg_timestamp *start, long millis);
107 /* Initialize the time dependent variables */
108 void fgTimeInit(struct fgTIME *t);
110 /* Update the time dependent variables */
111 void fgTimeUpdate(fgFLIGHT *f, struct fgTIME *t);
114 #endif /* _FG_TIME_H */
118 /* Revision 1.18 1998/04/08 23:35:40 curt
119 /* Tweaks to Gnu automake/autoconf system.
121 * Revision 1.17 1998/04/03 22:12:56 curt
122 * Converting to Gnu autoconf system.
123 * Centralized time handling differences.
125 * Revision 1.16 1998/02/07 15:29:47 curt
126 * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
127 * <chotchkiss@namg.us.anritsu.com>
129 * Revision 1.15 1998/01/27 00:48:06 curt
130 * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
131 * system and commandline/config file processing code.
133 * Revision 1.14 1998/01/22 02:59:43 curt
134 * Changed #ifdef FILE_H to #ifdef _FILE_H
136 * Revision 1.13 1998/01/19 19:27:20 curt
137 * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
138 * This should simplify things tremendously.
140 * Revision 1.12 1998/01/05 18:44:37 curt
141 * Add an option to advance/decrease time from keyboard.
143 * Revision 1.11 1997/12/19 23:35:07 curt
144 * Lot's of tweaking with sky rendering and lighting.
146 * Revision 1.10 1997/12/15 23:55:07 curt
147 * Add xgl wrappers for debugging.
148 * Generate terrain normals on the fly.
150 * Revision 1.9 1997/12/10 22:37:55 curt
151 * Prepended "fg" on the name of all global structures that didn't have it yet.
152 * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
154 * Revision 1.8 1997/12/09 04:25:38 curt
155 * Working on adding a global lighting params structure.
157 * Revision 1.7 1997/11/25 19:25:41 curt
158 * Changes to integrate Durk's moon/sun code updates + clean up.
160 * Revision 1.6 1997/09/20 03:34:35 curt
161 * Still trying to get those durned stars aligned properly.
163 * Revision 1.5 1997/09/16 15:50:31 curt
164 * Working on star alignment and time issues.
166 * Revision 1.4 1997/09/13 02:00:08 curt
167 * Mostly working on stars and generating sidereal time for accurate star
170 * Revision 1.3 1997/09/04 02:17:39 curt
173 * Revision 1.2 1997/08/27 03:30:36 curt
174 * Changed naming scheme of basic shared structures.
176 * Revision 1.1 1997/08/13 21:56:00 curt