The Nebula Device 3: Graphics::ModelEntity Class Reference

The Nebula Device 3

Graphics::ModelEntity Class Reference

#include <modelentity.h>

Inheritance diagram for Graphics::ModelEntity:

Graphics::GraphicsEntity Core::RefCounted Graphics::ActorEntity


Detailed Description

Represents a visible graphics object.

(C) 2007 Radon Labs GmbH

Public Types

enum  Type
 entity types
enum  LinkType
 visibility link types

Public Member Functions

 ModelEntity ()
 constructor
virtual ~ModelEntity ()
 destructor
void SetResourceId (const Resources::ResourceId &resId)
 set the model's resource id
const
Resources::ResourceId
GetResourceId () const
 get the model's resource id
Resources::Resource::State GetModelResourceState () const
 get the state of the contained managed model resource
const Ptr
< Models::ModelInstance > & 
GetModelInstance () const
 get pointer to model instance (only valid if already loaded)
bool IsActive () const
 return true if entity is currently active (is between OnActivate()/OnDeactivate()
bool IsValid () const
 return true if entity is current valid (ready for rendering)
Type GetType () const
 get the entity type
void SetTransform (const Math::matrix44 &m)
 set the entity's world space transform
const Math::matrix44GetTransform () const
 get the entity's world space transform
void SetVisible (bool b)
 set the entity's visibility
bool IsVisible () const
 return true if entity is set to visible
const Ptr< Stage > & GetStage () const
 get the stage this entity is attached to
bool IsAttachedToStage () const
 return true if entity is attached to stage
const Ptr< Cell > & GetCell () const
 get the cell this entity is attached to
bool IsAttachedToCell () const
 return true if entity is attached to cell
const Math::bboxGetLocalBoundingBox () const
 get the local space bounding box
const Math::bboxGetGlobalBoundingBox ()
 get bounding box in global space
void ClearLinks (LinkType linkType)
 clear all visibility links
void AddLink (LinkType linkType, const Ptr< GraphicsEntity > &entity)
 add visibility link
const Util::Array
< Ptr
< GraphicsEntity > > & 
GetLinks (LinkType type) const
 get visibility links by type
virtual
Math::ClipStatus::Type 
ComputeClipStatus (const Math::bbox &box)
 compute clip status against bounding box
void SetTime (Timing::Time t)
 set graphics time
Timing::Time GetTime () const
 get graphics time
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 OnActivate ()
 called when entity is created
virtual void OnDeactivate ()
 called before entity is destroyed
virtual void OnTransformChanged ()
 called when transform matrix changed
virtual void OnUpdate ()
 called to update the entity before rendering
virtual void OnRenderDebug ()
 called to render a debug visualization of the entity
void ValidateModelInstance ()
 validate the ModelInstance
void SetType (Type t)
 set entity type, call in constructor of derived class!
void SetLocalBoundingBox (const Math::bbox &b)
 set the local space bounding box
void SetValid (bool b)
 set to valid state (when the entity becomes ready for rendering)
virtual Ptr
< GraphicsEntity
CreateClone () const
 create a clone of the entity
virtual void OnAttachToStage (const Ptr< Stage > &stage)
 called when attached to Stage
virtual void OnRemoveFromStage ()
 called when removed from Stage
virtual void OnAttachToCell (const Ptr< Cell > &cell)
 called when attached to a Cell
virtual void OnRemoveFromCell ()
 called when removed from a Cell
virtual void OnShow ()
 called when the entity becomes visible
virtual void OnHide ()
 called when the entity becomes invisible
virtual void OnRender ()
 called before the entity is rendered
void UpdatePositionInCellTree ()
 update our position in the cell hierarchy
void UpdateGlobalBoundingBox ()
 update the global bounding box from the transform and local box

Member Function Documentation

void Graphics::ModelEntity::OnActivate (  )  [protected, virtual]

called when entity is created

This will initialize the managed model inside the ModelEntity.

Reimplemented from Graphics::GraphicsEntity.

Reimplemented in Graphics::ActorEntity.

void Graphics::ModelEntity::OnDeactivate (  )  [protected, virtual]

called before entity is destroyed

Cleanup our managed model, and ModelInstance if it is already initialized.

Reimplemented from Graphics::GraphicsEntity.

Reimplemented in Graphics::ActorEntity.

void Graphics::ModelEntity::OnTransformChanged (  )  [protected, virtual]

called when transform matrix changed

In OnTransformChanged() we need to update the transformation of our ModelInstance (if it has already been initialised).

Reimplemented from Graphics::GraphicsEntity.

void Graphics::ModelEntity::OnUpdate (  )  [protected, virtual]

called to update the entity before rendering

In OnUpdate() the ModelEntity first needs to check whether the ManagedModel has already been loaded, and if yes, a ModelInstance will be created, finally, the ModelInstance will be prepared for rendering.

Reimplemented from Graphics::GraphicsEntity.

Reimplemented in Graphics::ActorEntity.

void Graphics::ModelEntity::OnRenderDebug (  )  [protected, virtual]

called to render a debug visualization of the entity

Render our debug visualization (the bounding box).

Reimplemented from Graphics::GraphicsEntity.

void Graphics::ModelEntity::ValidateModelInstance (  )  [protected]

validate the ModelInstance

This creates and initializes our ModelInstance if needed. Since Model loading happens asynchronously this may happen at any time after the ModelEntity is activated.

ClipStatus::Type Graphics::GraphicsEntity::ComputeClipStatus ( const Math::bbox box  )  [virtual, inherited]

compute clip status against bounding box

Compute the clip status between this entity and a bounding box in global space. This method must be overwritten in a derived class.

Reimplemented in Graphics::CameraEntity, Lighting::GlobalLightEntity, and Lighting::SpotLightEntity.

Ptr< GraphicsEntity > Graphics::GraphicsEntity::CreateClone (  )  const [protected, virtual, inherited]

create a clone of the entity

This method is called to create an exact clone of this graphics entity. The new entity will not be attached to a stage.

void Graphics::GraphicsEntity::OnAttachToStage ( const Ptr< Stage > &  s  )  [protected, virtual, inherited]

called when attached to Stage

This method is called when the graphics entity is attached to a stage. An entity may only be attached to one stage at any time, but can be attached to different stages during its lifetime. Attachging an entity to a stage may be relatively slow because the entity must be inserted into the cell hierarchy.

void Graphics::GraphicsEntity::OnRemoveFromStage (  )  [protected, virtual, inherited]

called when removed from Stage

This method is called when the graphics entity is removed from a stage.

void Graphics::GraphicsEntity::OnAttachToCell ( const Ptr< Cell > &  c  )  [protected, virtual, inherited]

called when attached to a Cell

This method is called when the graphics entity is attached to a cell inside a stage. When entity travel through the graphics world, they will be remove and attached themselves from and to Cells as they cross Cell borders.

void Graphics::GraphicsEntity::OnRemoveFromCell (  )  [protected, virtual, inherited]

called when removed from a Cell

Called when the graphics entity is removed from a cell inside a stage.

void Graphics::GraphicsEntity::OnShow (  )  [protected, virtual, inherited]

called when the entity becomes visible

This method is called from the SetVisible() method when the entity changes from invisible to visible state.

void Graphics::GraphicsEntity::OnHide (  )  [protected, virtual, inherited]

called when the entity becomes invisible

This method is called from the SetVisible() method when the entity changes from visible to invisible state.

void Graphics::GraphicsEntity::OnRender (  )  [protected, virtual, inherited]

called before the entity is rendered

This method is called on the graphics entity to render itself. This method will only be called if the entity is visible through the camera of the currently rendered View.

void Graphics::GraphicsEntity::UpdatePositionInCellTree (  )  [protected, inherited]

update our position in the cell hierarchy

This method is called from OnUpdate() when either the entity's transformation or bounding box has changed. It checks if the entity still fits into its current cell, and if not, moves the entity in a new cell.

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.