You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
3.3 KiB
91 lines
3.3 KiB
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield |
|
* |
|
* This library is open source and may be redistributed and/or modified under |
|
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or |
|
* (at your option) any later version. The full license is in LICENSE file |
|
* included with this distribution, and on the openscenegraph.org website. |
|
* |
|
* This library is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* OpenSceneGraph Public License for more details. |
|
*/ |
|
|
|
#ifndef OSG_FRAMESTAMP |
|
#define OSG_FRAMESTAMP 1 |
|
|
|
#include <osg/Referenced> |
|
|
|
#if defined(__sgi) || (defined(WIN32) && !defined(__MWERKS__)) |
|
#include <time.h> |
|
#else |
|
#include <ctime> |
|
using std::tm; |
|
#endif |
|
|
|
namespace osg |
|
{ |
|
|
|
/** Class which encapsulates the frame number, reference time and calendar |
|
* time of specific frame, used to synchronize operations on the scene graph |
|
* and other machines when using a graphics cluster. Note the calendar |
|
* time can be an artificial simulation time or capture the real time |
|
* of day etc.*/ |
|
class OSG_EXPORT FrameStamp : public Referenced |
|
{ |
|
public: |
|
|
|
FrameStamp(); |
|
FrameStamp(const FrameStamp& fs); |
|
|
|
FrameStamp& operator = (const FrameStamp& fs); |
|
|
|
void setFrameNumber(unsigned int fnum) { _frameNumber = fnum; } |
|
unsigned int getFrameNumber() const { return _frameNumber; } |
|
|
|
void setReferenceTime(double refTime) { _referenceTime = refTime; } |
|
double getReferenceTime() const { return _referenceTime; } |
|
|
|
void setSimulationTime(double refTime) { _simulationTime = refTime; } |
|
double getSimulationTime() const { return _simulationTime; } |
|
|
|
void setCalendarTime(const tm& calendarTime); |
|
void getCalendarTime(tm& calendarTime) const; |
|
|
|
// keep public to allow it to be permit allocation which is |
|
// not on the heap used osgcluster |
|
virtual ~FrameStamp(); |
|
|
|
protected: |
|
|
|
|
|
// note no dynamic memory is used so that data can be passed |
|
// via a simple memory copy or within a data packet across |
|
// the network. |
|
|
|
unsigned int _frameNumber; |
|
double _referenceTime; |
|
double _simulationTime; |
|
|
|
// member variables of time.h's tm structure, copied here to |
|
// ensure that all data is not dynamic. The tm structure itself |
|
// is not completely consistent between implementations, which |
|
// could be a problem when sending the FrameStamp across a network |
|
// with different versions of tm (i.e mixing Unix and Windows.) |
|
int tm_sec; /* Seconds. [0-60] (1 leap second) */ |
|
int tm_min; /* Minutes. [0-59] */ |
|
int tm_hour; /* Hours. [0-23] */ |
|
int tm_mday; /* Day. [1-31] */ |
|
int tm_mon; /* Month. [0-11] */ |
|
int tm_year; /* Year - 1900. */ |
|
int tm_wday; /* Day of week. [0-6] */ |
|
int tm_yday; /* Days in year. [0-365] */ |
|
int tm_isdst; /* DST. [-1/0/1]*/ |
|
|
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
#endif
|
|
|