00001 #ifndef _RBTIME_HXX_
00002 #define _RBTIME_HXX_
00003
00004 #include <rglobals.hxx>
00005
00006
00007 namespace RayGina {
00008 namespace CORE {
00009 class CORE_EXPORT RTime {
00010 private:
00011 RUInt32 nanosec;
00012 RUInt32 framelen;
00013 RUInt32 framenumber;
00014 public:
00015 inline RTime() : nanosec(0),framelen(40000),framenumber(0) {};
00016 inline RTime(RUInt32 newns) : nanosec(newns),framelen(40000),framenumber(newns/40000) {};
00017 inline RTime(RUInt32 newns,RUInt32 newfl) : nanosec(newns),framelen(newfl),framenumber(newns/newfl) {};
00018
00019
00020 inline void setFrameRate(RReal32 frate) {
00021 if(frate == 0.0f) {
00022
00023 }
00024 framelen = (RUInt32)(1000000.0f/frate);
00025 framenumber = nanosec/framelen;
00026 };
00027 inline RReal32 getFrameRate() const {
00028 return 1000000.0f/(RReal32)framelen;
00029 };
00030
00031 inline void setTime(RUInt32 newtime) {
00032 nanosec = newtime;
00033 framenumber = nanosec/framelen;
00034 };
00035 inline RUInt32 getTime() const {
00036 return nanosec;
00037 };
00038
00039 inline void setFrameNumber(RUInt32 newfn) {
00040 framenumber = newfn;
00041 nanosec = framelen*framenumber;
00042 };
00043 inline RUInt32 getFrameNumber() const {
00044 return framenumber;
00045 };
00046
00047 inline void setFrameLength(RUInt32 newfl) {
00048 framelen = newfl;
00049 framenumber = nanosec/framelen;
00050 };
00051 inline RUInt32 getFrameLength() const {
00052 return framelen;
00053 };
00054 };
00055 };
00056 };
00057 #endif