The Nebula Device 3: Models::StateNodeInstance Class Reference

The Nebula Device 3

Models::StateNodeInstance Class Reference

#include <statenodeinstance.h>

Inheritance diagram for Models::StateNodeInstance:

Models::TransformNodeInstance Models::ModelNodeInstance Core::RefCounted Models::ShapeNodeInstance Models::ParticleSystemNodeInstance Models::SkinShapeNodeInstance


Detailed Description

Holds and applies per-instance shader state.

(C) 2007 Radon Labs GmbH

Public Member Functions

 StateNodeInstance ()
 constructor
virtual ~StateNodeInstance ()
 destructor
virtual void ApplyState ()
 apply per-instance state prior to rendering
Ptr
< CoreGraphics::ShaderVariableInstance
CreateShaderVariableInstance (const CoreGraphics::ShaderVariable::Semantic &semantic)
 instanciate a shader variable by semantic
bool HasShaderVariableInstance (const CoreGraphics::ShaderVariable::Semantic &semantic) const
 return true if a shader variable has been instantiated
const Ptr
< CoreGraphics::ShaderVariableInstance > & 
GetShaderVariableInstance (const CoreGraphics::ShaderVariable::Semantic &semantic) const
 get a shader variable instance
virtual void Update ()
 perform per-frame updates
void SetPosition (const Math::point &p)
 set position
const Math::pointGetPosition () const
 get position
void SetRotate (const Math::quaternion &r)
 set rotate quaternion
const Math::quaternionGetRotate () const
 get rotate quaternion
void SetScale (const Math::vector &s)
 set scale
const Math::vectorGetScale () const
 get scale
void SetRotatePivot (const Math::point &p)
 set rotate pivot
const Math::pointGetRotatePivot () const
 get rotate pivot
void SetScalePivot (const Math::point &p)
 set scale pivot
const Math::pointGetScalePivot () const
 get scale pivot
const Math::matrix44GetLocalTransform ()
 get resulting local transform matrix in local parent space
const Math::matrix44GetModelTransform () const
 get model space transform (valid after Update())
virtual void Render ()
 perform rendering
bool HasParent () const
 return true if node has a parent
const Ptr
< ModelNodeInstance > & 
GetParent () const
 get parent node
const Util::Array
< Ptr
< ModelNodeInstance > > & 
GetChildren () const
 get child nodes
bool IsAttachedToModelInstance () const
 return true if attached to ModelInstance
const Ptr
< ModelInstance > & 
GetModelInstance () const
 get the ModelInstance we are attached to
const Ptr< ModelNode > & GetModelNode () const
 get the ModelNode we're associated with
virtual void SetVisible (bool b)
 set visible, used by charactersystem
bool IsVisible () const
 is visible
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 OnAttachToModelInstance (const Ptr< ModelInstance > &inst, const Ptr< ModelNode > &node, const Ptr< ModelNodeInstance > &parentNodeInst)
 called when attached to ModelInstance
virtual void OnRemoveFromModelInstance ()
 called when removed from ModelInstance
void SetParent (const Ptr< ModelNodeInstance > &p)
 set parent node
void AddChild (const Ptr< ModelNodeInstance > &c)
 add a child node
virtual void OnNotifyVisible (IndexT frameIndex)
 notify that we are visible
virtual void RenderDebug ()
 render node specific debug shape
void SetChildrenVisiblity (ModelNodeInstance *parent, bool b)
 set visible flag of children

Member Function Documentation

void Models::TransformNodeInstance::Update (  )  [virtual, inherited]

perform per-frame updates

The update method should first invoke any animators which change per-instance attributes (this is done in the parent class). Then the local space transforms must be flattened into model space.

Reimplemented from Models::ModelNodeInstance.

Reimplemented in Models::CharacterNodeInstance, Models::ParticleSystemNodeInstance, and Models::SkinShapeNodeInstance.

void Models::ModelNodeInstance::Render (  )  [virtual, inherited]

perform rendering

The Render() method is called when the ModelNodeInstance needs to render itself. There will always be a call to the Apply() method before Render() is called, however, Render() may be called several times per Apply() invokation.

Reimplemented in Models::ParticleSystemNodeInstance, Models::ShapeNodeInstance, and Models::SkinShapeNodeInstance.

void Models::ModelNodeInstance::SetVisible ( bool  b  )  [inline, virtual, inherited]

set visible, used by charactersystem

Set visibility of node and its children, should not be call per frame!

Reimplemented in Models::SkinShapeNodeInstance.

void Models::ModelNodeInstance::OnNotifyVisible ( IndexT  frameIndex  )  [protected, virtual, inherited]

notify that we are visible

This method is called from the NotifyVisible() methode of our ModelInstance object. If the ModelNodeInstance provides something renderable it should respond by adding itself as visible node instance to its model node.

Reimplemented in Models::ParticleSystemNodeInstance, Models::ShapeNodeInstance, and Models::SkinShapeNodeInstance.

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.