The Nebula Device 3: BaseGameFeature::TimeSource Class Reference

The Nebula Device 3

BaseGameFeature::TimeSource Class Reference

#include <timesource.h>

Inheritance diagram for BaseGameFeature::TimeSource:

Core::RefCounted BaseGameFeature::InputTimeSource BaseGameFeature::SystemTimeSource

Detailed Description

A generic time source object which is attached to the TimeManager. Each time source tracks its own time independently from the other time sources, they can also be paused and unpaused independentlty from each other, and they may also run faster or slower then realtime.

To create new time sources, derive a subclass from time source. This is necessary because time source objects are identified by their class id. A positive side effect of this is that time sources are created as singletons, so access is very simple, e.g.:

Time gameTime = GameTime::Instance()->GetTime();

Time source classes are responsible for loading/saving their state into the globals attribute table.

All timesources have to be passiv, everyone who needs time has to get it on its own from one of the different timsources. No time source should set the time in a subsystem activly.

(C) 2007 Radon Labs GmbH

Public Member Functions

 TimeSource ()
 constructor
virtual ~TimeSource ()
 destructor
virtual void OnActivate ()
 called when time source is attached to the time manager
virtual void OnDeactivate ()
 called when time source is removed from the time manager
virtual void OnLoad (const Ptr< Db::Reader > &dbReader)
 read state from database reader
virtual void OnSave (const Ptr< Db::Writer > &dbWriter)
 write state to database writer
virtual void Reset ()
 reset the time source to 0.0
virtual void Pause ()
 pause the time source (increments pause counter)
virtual void Continue ()
 unpause the time source (decrements pause counter)
bool IsPaused () const
 return true if currently paused
virtual void SetFactor (float f)
 set acceleration/deceleration factor
float GetFactor () const
 get acceleration/deceleration factor
Timing::Time GetTime () const
 get the current time
Timing::Time GetFrameTime () const
 get the current frame time
uint GetFrameId () const
 get a unique frame id
Timing::Tick GetTicks () const
 get current ticks
int GetRefCount () const
 get the current refcount
void AddRef ()
 increment refcount by one
void Release ()
 decrement refcount and destroy object if refcount is zero
bool IsInstanceOf (const Rtti &rtti) const
 return true if this object is instance of given class
bool IsInstanceOf (const Util::String &className) const
 return true if this object is instance of given class by string
bool IsInstanceOf (const Util::FourCC &classFourCC) const
 return true if this object is instance of given class by fourcc
bool IsA (const Rtti &rtti) const
 return true if this object is instance of given class, or a derived class
bool IsA (const Util::String &rttiName) const
 return true if this object is instance of given class, or a derived class, by string
bool IsA (const Util::FourCC &rttiFourCC) const
 return true if this object is instance of given class, or a derived class, by fourcc
const Util::StringGetClassName () const
 get the class name
Util::FourCC GetClassFourCC () const
 get the class FourCC code

Static Public Member Functions

static void DumpRefCountingLeaks ()
 dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)

Protected Member Functions

virtual void UpdateTime (Timing::Time frameTime, Timing::Tick t)
 update current time (called by time manager)

Member Function Documentation

void BaseGameFeature::TimeSource::UpdateTime ( Timing::Time  frameTime,
Timing::Tick  t 
) [protected, virtual]

update current time (called by time manager)

This method is called when the internal time should be updated. It will be called early in the frame by the TimeManager. Think of this method as the time source's OnFrame() method.

int Core::RefCounted::GetRefCount (  )  const [inline, inherited]

get the current refcount

Return the current refcount of the object.

void Core::RefCounted::AddRef (  )  [inline, inherited]

increment refcount by one

Increment the refcount of the object.

void Core::RefCounted::Release (  )  [inline, inherited]

decrement refcount and destroy object if refcount is zero

Decrement the refcount and destroy object if refcount is zero.

const Util::String & Core::RefCounted::GetClassName (  )  const [inline, inherited]

get the class name

Get the class name of the object.

Util::FourCC Core::RefCounted::GetClassFourCC (  )  const [inline, inherited]

get the class FourCC code

Get the class FourCC of the object.

void Core::RefCounted::DumpRefCountingLeaks (  )  [static, inherited]

dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)

This method should be called as the very last before an application exits.