time_t cur_time;
// Break down of equivalent GMT time
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || defined(__MINGW32__)
struct tm m_gmt; // copy of system gmtime(&time_t) structure
#else
struct tm *gmt;
* 0).
* @param lon current longitude
* @param lat current latitude
- * @param root root path point to data file location (timezone, etc.) */
- SGTime( double lon, double lat, const string& root );
+ * @param root root path point to data file location (timezone, etc.)
+ * @param init_time provide an initialization time, 0 means use
+ current clock time */
+ SGTime( double lon, double lat, const string& root, time_t init_time /* = 0 */ );
/**
* Create an instance given a data file path.
/** Destructor */
~SGTime();
+ /** init common constructor code */
+ void init( double lon, double lat, const string& root, time_t init_time /* = 0 */ );
+
/**
* Update the time related variables.
* The update() method requires you to pass in your position and
* every frame.
* @param lon current longitude
* @param lat current latitude
+ * @param ct specify a unix time, otherwise specify 0 to use current
+ clock time
* @param warp an optional time offset specified in seconds. This
* allows us to advance or rewind "time" if we choose to. */
- void update( double lon, double lat, long int warp = 0 );
+ void update( double lon, double lat, time_t ct /* = 0 */, long int warp /* = 0 */ );
/**
* Given lon/lat, update timezone information and local_offset
inline char* get_zonename() const { return zonename; }
/** @return GMT in a "brokent down" tm structure */
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || defined(__MINGW32__)
inline struct tm* getGmt()const { return (struct tm *)&m_gmt; };
#else
inline struct tm* getGmt()const { return gmt; };
* @return modified julian date */
double sgTimeCalcMJD(int mn, double dy, int yr);
+/**
+ * \relates SGTime
+ * Given an optional offset from current time calculate the current
+ * modified julian date.
+ * @param ct specify a unix time, otherwise specify 0 to use current
+ clock time
+ * @param warp number of seconds to offset from current time (0 if no offset)
+ * @return current modified Julian date (number of days elapsed
+ * since 1900 jan 0.5), mjd. */
+double sgTimeCurrentMJD( time_t ct /* = 0 */, long int warp /* = 0 */ );
+
/**
* \relates SGTime
* Given an mjd, calculate greenwich mean sidereal time, gst
* @param mjd modified julian date
- * @return greenwich mean sidereal time (gst)
- */
+ * @return greenwich mean sidereal time (gst) */
double sgTimeCalcGST( double mjd );
/**