The Nebula Device 3: RenderModules::RTPlugin Class Reference

The Nebula Device 3

RenderModules::RTPlugin Class Reference

#include <rtplugin.h>

Inheritance diagram for RenderModules::RTPlugin:

Core::RefCounted

Detailed Description

Standard interface to add new functionality to the render thread. Adding functionality to the render thread usually requires the following steps:

  • implement a set of classes which implement the render-thread functionality
  • implement proxy classes which act as a frontend in the main thread
  • implement a message protocol
  • implement a message handler
  • derive a new class from RenderThreadPlugin, setup an instance and call GraphicsInterface::Instance()->RegisterRenderThreadPlugin()

Please note that the RenderThreadPlugin object lives completely on the render thread side! Define a clear separation line between main-thread and render-thread code and use messages to communicate between the two!

NOTE: all "On*" methods are called from the RenderThread!

(C) 2009 Radon Labs GmbH

Public Member Functions

 RTPlugin ()
 constructor
virtual ~RTPlugin ()
 destructor
virtual void OnRegister ()
 called when plugin is registered on the render-thread side
virtual void OnUnregister ()
 called when plugin is unregistered on the render-thread side
virtual void OnStageCreated (const Ptr< InternalGraphics::InternalStage > &stage)
 called when a new stage has been created
virtual void OnDiscardStage (const Ptr< InternalGraphics::InternalStage > &stage)
 called when a stage is discarded
virtual void OnViewCreated (const Ptr< InternalGraphics::InternalView > &view)
 called when a new view has been created
virtual void OnDiscardView (const Ptr< InternalGraphics::InternalView > &view)
 called when a view is being discarded
virtual void OnAttachEntity (const Ptr< InternalGraphics::InternalGraphicsEntity > &entity)
 called when a graphics entity has been attached to a stage
virtual void OnRemoveEntity (const Ptr< InternalGraphics::InternalGraphicsEntity > &entity)
 called when a graphics entity is being removed from a stage
virtual void OnUpdateBefore (IndexT frameId, Timing::Time time)
 called before updating entities
virtual void OnUpdateAfter (IndexT frameId, Timing::Time time)
 called after updating entities
virtual void OnRenderBefore (IndexT frameId, Timing::Time time)
 called before rendering entities
virtual void OnRenderAfter (IndexT frameId, Timing::Time time)
 called after rendering entities
virtual void OnRenderFrameBatch (const Ptr< Frame::FrameBatch > &frameBatch)
 called when rendering a frame batch
virtual void OnRenderWithoutView (IndexT frameId, Timing::Time time)
 called if no view exists, and no default camera is set in view
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!)

Member Function Documentation

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.