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

Detailed Description

Client-side proxy of a InternalGraphics::InternalModelEntity.

(C) 2008 Radon Labs GmbH

Public Member Functions

 ModelEntity ()
 constructor
virtual ~ModelEntity ()
 destructor
void SetResourceId (const Resources::ResourceId &resId)
 set the model's resource id
const Resources::ResourceIdGetResourceId () const
 get the model's resource id
void SetRootNodePath (const Util::StringAtom &rootNodePath)
 set optional root node path (allows to setup ModelEntity from a child node in a model node hierarchy)
const Util::StringAtomGetRootNodePath () const
 get optional root node path
void SetRootNodeOffsetMatrix (const Math::matrix44 &offsetMatrix)
 set optional root node offset matrix
const Math::matrix44GetRootNodeOffsetMatrix () const
 get optional root node offset matrix
void ConfigureAnimDrivenMotionTracking (bool enabled, const Util::StringAtom &jointName)
 enable anim driven motion tracking
void ConfigureAnimEventTracking (bool enabled, bool onlyDominatingClip)
 enable anim event tracking
void ConfigureCharJointTracking (bool enabled, const Util::Array< Util::StringAtom > &jointNames)
 enable joint tracking
bool IsAnimDrivenMotionTrackingEnabled () const
 return true if anim driven motion tracking is enabled
const Util::StringAtomGetAnimDrivenMotionJointName () const
 get the anim-driven-motion tracking joint name
const Math::vectorGetAnimDrivenMotionVector () const
 get the current anim-driven-motion tracking vector
bool IsAnimEventTrackingEnabled () const
 return true if anim event tracking is enabled
const Util::Array< Animation::AnimEventInfo > & GetAnimEvents () const
 return the array of anim events of the current frame
bool IsCharJointTrackingEnabled () const
 return true if char joint tracking is enabled
bool IsCharJointDataValid () const
 return true if current char joint data is valid in this frame (may change by visibility)
void AddTrackedCharJoint (const Util::StringAtom &jointName)
 dynamically add a tracked character joint
const Shared::CharJointInfoGetTrackedCharJointInfo (const Util::StringAtom &jointName) const
 access tracked char joint data, return NULL ptr if joint data not valid or not yet available!
void UpdateModelNodeInstanceShaderVariable (const Util::StringAtom &nodeName, const Util::StringAtom &variableSemantic, const Util::Variant &value)
 update the value of a shader variable on a node instance of the model entity
void UpdateModelNodeInstanceVisibility (const Util::StringAtom &nodeName, bool visible)
 update the visibility of a model node instance node
bool IsValid () const
 return true if entity is valid (is attached to a stage)
GraphicsEntityType::Code 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 proxy this entity is attached to
Math::ClipStatus::Type GetClipStatus () const
 get current clip status
const Math::bboxGetLocalBoundingBox () const
 get the local bounding box
const Math::bboxGetGlobalBoundingBox () const
 get the global bounding box
Timing::Time GetEntityTime () const
 get current entity time
void SendMsg (const Ptr< GraphicsEntityMessage > &msg)
 send a message to the server-side graphics entity
bool IsObjectRefValid () const
 test if the entity's object ref is valid
const Ptr< Threading::ObjectRef > & GetObjectRef () const
 get the entity handle
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

void SetType (GraphicsEntityType::Code t)
 set graphics entity type, called from constructor of subclass
virtual void Discard ()
 called by stage when entity should discard itself
void SendCreateMsg (const Ptr< CreateGraphicsEntity > &msg)
 send off a specific create message from the subclass
virtual void OnTransformChanged ()
 called when transform matrix changed

Member Function Documentation

const Shared::CharJointInfo * Graphics::ModelEntity::GetTrackedCharJointInfo ( const Util::StringAtom jointName  )  const

access tracked char joint data, return NULL ptr if joint data not valid or not yet available!

NOTE: the method returns 0 if the joint is not valid or has not been found!

void Graphics::GraphicsEntity::SendMsg ( const Ptr< GraphicsEntityMessage > &  msg  )  [inherited]

send a message to the server-side graphics entity

Send a generic GraphicsEntityMessage to the server-side entity.

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

called by stage when entity should discard itself

Discard the server-side graphics entity. This method is called from StageProxy::RemoveEntityProxy(). There's special handling if the server-side entity hasn't been created yet, in this case, a pointer to the original create message must be handed over to the render thread.

Reimplemented in Graphics::CameraEntity.

void Graphics::GraphicsEntity::SendCreateMsg ( const Ptr< CreateGraphicsEntity > &  msg  )  [protected, inherited]

send off a specific create message from the subclass

This method must be called from the Setup() method of a subclass to send off a specific creation message. The message will be stored in the proxy to get the entity handle back later when the server-side graphics entity has been created.

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

called when transform matrix changed

Called by SetTransform(). This gives subclasses a chance to react to changes on the transformation matrix.

Reimplemented in Graphics::CameraEntity.

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.