Node Class Reference

#include <node.h>

Class Description

+ Inheritance diagram for Node:

Public Types

enum  DiagnosticLevel { dgnLevel1, dgnLevel2, dgnLevel3 }
 Indicates the level of validity checking that is performed in CheckValidity() More...
 

Public Member Functions

 Node (const QString &sStringID="", const QString &sDisplayName="")
 Standard constructor. More...
 
virtual ~Node (void)
 
virtual void Initialize (void)
 
void LoadTemplate (const QString &sFileName="", bool bStartEvent=false)
 Use an external XML file to initialize the attributes. More...
 
void SaveTemplate (const QString &sFileName="", bool bSaveOnlyVisible=false)
 Save current attributes as an XML template. More...
 
unsigned int Version (void) const
 Returns the current version of the node. This number increases when the content of the node changed (when ContentChanged() called). More...
 
void SetVersion (unsigned int iVersion)
 Sets the current version number for the node. More...
 
unsigned int ReferenceCount (void) const
 Returns the number of pointers referencing this node. More...
 
AttributeReferencePointer (unsigned int iIndex) const
 Returns the address of an attribute which refers to this node. The type of the attribute is always aptr. More...
 
NodeReferenceNode (unsigned int iIndex) const
 Returns the address of a node referencing this node. More...
 
virtual QString Name (const ClassDesc *pClass=0) const
 Deprecated. More...
 
virtual void SetName (const QString &sName)
 Deprecated. More...
 
virtual QString StringID (const ClassDesc *pClass=0) const
 Returns the string id of the node. More...
 
virtual void SetStringID (const QString &sStringID)
 Sets the string id of the node. More...
 
virtual QString DisplayName (void) const
 Returns the display name of the node. More...
 
virtual void SetDisplayName (const QString &sDisplayName)
 Sets the display name of the node. More...
 
virtual QString HelpID (void) const
 Returns the help entry id of the node. Can be overwritten in derived classes. More...
 
virtual void SetHelpID (const QString &sHelpID)
 Sets the help entry id of the node. More...
 
void Annex (Node *pSource, const QString &sCategory="")
 Relink all the attributes of the source node to this one. More...
 
virtual void Serialize (Stream &s)
 Serializes the node. More...
 
bool IsKindOf (const ClassDesc *pClass) const
 Returns true if this node is derived from the pClass class. More...
 
void ContentChanged (void) const
 This function must be called if the content of the node is changed. More...
 
virtual void CheckValidity (DiagnosticLevel iLevel=dgnLevel2) const
 Checks the validity of this node. More...
 
virtual void CopyTo (Node *pNode) const
 
virtual NodeDuplicate (void) const
 
Event functions

These functions are used for working with node events, such as notifications to changes to an attribute.

virtual void OnNodeEvent (const Attribute &cAttribute, NodeEventType cType)
 This function is called if an event occurs with any of the attributes of the node. More...
 
virtual void OnEvent (const EventGate &cEvent)
 This function is called when a generic event occurs. See EventGate class. More...
 
void RequestDeferredEvent (Attribute &cAttribute)
 Request for a deferred event, which will occur only in the main loop. More...
 
Attribute methods

These functions are for working with attributes.

unsigned int AttributeCount (void) const
 Returns the number of attributes owned by the node. More...
 
AttributeAttributeByIndex (int iIndex) const
 Returns a specified attribute (or 0 if iIndex is greater than the number of attributes). More...
 
AttributeAttributeByName (const QString &sName) const
 Returns a specified attribute by its name. Returns 0 if the attribute not found. More...
 
AttributeAttributeByID (const QString &sID) const
 Returns a specified attribute by its ID. Returns 0 if the attribute not found. More...
 
void SetAttributeValue (const QString &sAttributeID, const QString &sNewValue)
 Set the value of an attribute from a string. More...
 
QString AttributeValue (const QString &sAttributeID) const
 Returns the current value of an attribute as a string. More...
 
void LogAttributes (void) const
 Write all attributes into the log file. More...
 
virtual QWidgetCreatePropertiesWindow (QWidget *pParent)
 Create a window which displays the attributes of the node. Can be overriden to provide a custom interface. More...
 
AttributeAddAttribute (Attribute::AttributeType type, const QString &id)
 Allows SDK users to add attributes at runtime. More...
 

Static Public Member Functions

static void StartHashing ()
 This is called once in main once static ctors are done. More...
 

Public Attributes

AttributeThisPointer m_pThis
 
 DECLARE_CLASS
 

Friends

struct Attribute
 
class Stream
 
class EventGate
 

Node enumeration and retrieval function

The following functions are used for enumerating over nodes.

static NodeFirst (void)
 This function will return the first node in the memory. Used to enumerate all the current nodes. See also Next(). More...
 
static NodeByID (int iID)
 Returns the node with the specified ID, or zero if such a node does not exists. More...
 
static NodeByName (const QString &sClass, const QString &sName)
 Search for a node with the name sName. More...
 
NodeNext (void) const
 Returns the next node in the chain. Used to enumerate the current nodes. See also First(). More...
 
int ID (void) const
 Returns an ID for the node. The ID is unique in the whole application life. More...
 
bool SetID (int iID)
 Set ID for the node. More...
 

Member Enumeration Documentation

Indicates the level of validity checking that is performed in CheckValidity()

Enumerator
dgnLevel1 

Very fast, cursory check.

dgnLevel2 

Fairly quick check.

dgnLevel3 

Through check, which can be slower than the others.

Definition at line 781 of file node.h.

782  {
784  dgnLevel1,
785 
787  dgnLevel2,
788 
790  dgnLevel3
791  };
Very fast, cursory check.
Definition: node.h:784
Fairly quick check.
Definition: node.h:787
Through check, which can be slower than the others.
Definition: node.h:790

Constructor & Destructor Documentation

Node ( const QString sStringID = "",
const QString sDisplayName = "" 
)

Standard constructor.

You can specify the string id & display name of the node.

See also
StringID(), DisplayName(). The unique Node ID is assigned automatically.
virtual ~Node ( void  )
virtual

Member Function Documentation

static void StartHashing ( )
static

This is called once in main once static ctors are done.

Before calling this Node::ByID is very slow. After it is very fast. It adds any existing nodes to the ID hash table when called for the first time. This is all to avoid using QHash at static ctor time – which can crash due to the undefined order of execution of static ctors.

virtual void Initialize ( void  )
virtual

Reimplemented in SamplerUI, and ViewPortFilter.

virtual void OnNodeEvent ( const Attribute cAttribute,
NodeEventType  cType 
)
virtual

This function is called if an event occurs with any of the attributes of the node.

All derived classes should override this function to be able to handle attribute events.

Parameters
cAttributeThe attribute which caused the event. The attribute has a special == operator to make it easier to implement this function. You can write the following:
void MyClass::OnNodeEvent( const Attribute &cAttribute, NodeEventType cType )
{
if ( cAttribute == myAttribute0 )
{
...
}
else if ( cAttribute == myAttribute1 )
{
...
}
}
This comparison will check the address of the two attributes and NOT their values.
cTypeType of the event occured.

Reimplemented in BrushOperation, AttributeWidget, and Preferences.

virtual void OnEvent ( const EventGate cEvent)
virtual

This function is called when a generic event occurs. See EventGate class.

void RequestDeferredEvent ( Attribute cAttribute)

Request for a deferred event, which will occur only in the main loop.

void LoadTemplate ( const QString sFileName = "",
bool  bStartEvent = false 
)

Use an external XML file to initialize the attributes.

void SaveTemplate ( const QString sFileName = "",
bool  bSaveOnlyVisible = false 
)

Save current attributes as an XML template.

unsigned int Version ( void  ) const

Returns the current version of the node. This number increases when the content of the node changed (when ContentChanged() called).

void SetVersion ( unsigned int  iVersion)

Sets the current version number for the node.

unsigned int ReferenceCount ( void  ) const

Returns the number of pointers referencing this node.

Attribute* ReferencePointer ( unsigned int  iIndex) const

Returns the address of an attribute which refers to this node. The type of the attribute is always aptr.

Node* ReferenceNode ( unsigned int  iIndex) const

Returns the address of a node referencing this node.

static Node* First ( void  )
static

This function will return the first node in the memory. Used to enumerate all the current nodes. See also Next().

Node* Next ( void  ) const
inline

Returns the next node in the chain. Used to enumerate the current nodes. See also First().

Definition at line 854 of file node.h.

854 { return m_pNext; }
int ID ( void  ) const
inline

Returns an ID for the node. The ID is unique in the whole application life.

Definition at line 857 of file node.h.

857 { return m_iID; }
bool SetID ( int  iID)

Set ID for the node.

The ID must be unique. If not, this function does nothing and returns false. Nodes are hashed by ID once static ctors are complete.

static Node* ByID ( int  iID)
static

Returns the node with the specified ID, or zero if such a node does not exists.

Nodes are hashed by ID once static ctors are complete, so this should be fast.

static Node* ByName ( const QString sClass,
const QString sName 
)
static

Search for a node with the name sName.

Will return 0 if the node was not found. Currently does a linear search through the nodes, following a linked list, so it's not exactly fast – in fact, it can be quite slow. Avoid it.

virtual QString Name ( const ClassDesc pClass = 0) const
virtual

Deprecated.

Call StringID() or DisplayName() instead. Returns the name of the node. Can be overwritten in derived classes.

virtual void SetName ( const QString sName)
virtual

Deprecated.

Call SetStringID() or SetDisplayName() instead. Sets the name of the node. Has no effect if Name() is overwritten in a derived class.

Reimplemented in TexturePool, LayerMeshData, and LayerGroup.

+ Examples:
virtual QString StringID ( const ClassDesc pClass = 0) const
virtual

Returns the string id of the node.

String ID will never be translated and keep consistent in any language.

Reimplemented in BrushOperation, and ViewPortFilter.

virtual void SetStringID ( const QString sStringID)
virtual

Sets the string id of the node.

Reimplemented in LayerGroup, and TreeNode.

virtual QString DisplayName ( void  ) const
virtual

Returns the display name of the node.

DisplayName may be translated and different according to the language settings.

Reimplemented in BrushOperation, and ViewPortFilter.

virtual void SetDisplayName ( const QString sDisplayName)
virtual

Sets the display name of the node.

For subderived classes that represent tools such as brushes, manipulators, and hotkey actions you can use this method to set a localized name for the node that will be displayed in the UI panels in Mudbox.

virtual QString HelpID ( void  ) const
virtual

Returns the help entry id of the node. Can be overwritten in derived classes.

virtual void SetHelpID ( const QString sHelpID)
virtual

Sets the help entry id of the node.

void Annex ( Node pSource,
const QString sCategory = "" 
)

Relink all the attributes of the source node to this one.

unsigned int AttributeCount ( void  ) const

Returns the number of attributes owned by the node.

Attribute* AttributeByIndex ( int  iIndex) const

Returns a specified attribute (or 0 if iIndex is greater than the number of attributes).

Attribute* AttributeByName ( const QString sName) const

Returns a specified attribute by its name. Returns 0 if the attribute not found.

Attribute* AttributeByID ( const QString sID) const

Returns a specified attribute by its ID. Returns 0 if the attribute not found.

void SetAttributeValue ( const QString sAttributeID,
const QString sNewValue 
)

Set the value of an attribute from a string.

QString AttributeValue ( const QString sAttributeID) const

Returns the current value of an attribute as a string.

void LogAttributes ( void  ) const

Write all attributes into the log file.

virtual QWidget* CreatePropertiesWindow ( QWidget pParent)
virtual

Create a window which displays the attributes of the node. Can be overriden to provide a custom interface.

Attribute* AddAttribute ( Attribute::AttributeType  type,
const QString id 
)

Allows SDK users to add attributes at runtime.

Attribute UI visibility is set to false. The Node controls the memory of the attribute (it will delete it) Note that the attribute will be serialized when the node is serialized.

virtual void Serialize ( Stream s)
virtual

Serializes the node.

Override this function in your plug-in to save and load attributes and custom data with the Mudbox file.

Reimplemented in MeshPartitioning, BrushOperation, Gate, Locator, LayerContainer, MudboxCurve, Topology, Preferences, SelectAllOperation, NURBSCurve, SelectionSet, CurveBase, and TreeNode.

bool IsKindOf ( const ClassDesc pClass) const

Returns true if this node is derived from the pClass class.

Warning: RTTI is not fast – don't count on it being fast.

void ContentChanged ( void  ) const

This function must be called if the content of the node is changed.

All other nodes which has an AttributePointer pointing to this node will receive a event notficiation of type etPointerContentChanged (See NodeEventType).

virtual void CheckValidity ( DiagnosticLevel  iLevel = dgnLevel2) const
virtual

Checks the validity of this node.

Implementors should always call the CheckValidity method of their base class in their subclasses CheckValidity call. throws a mudbox::Error if this node is invalid.

Reimplemented in MeshPartitioning, Mesh, Topology, SubdivisionLevel, and TreeNode.

virtual void CopyTo ( Node pNode) const
virtual

Reimplemented in Mesh, MudboxCurve, Topology, TreeNode, and CurveBase.

virtual Node* Duplicate ( void  ) const
virtual

Friends And Related Function Documentation

friend struct Attribute
friend

Definition at line 767 of file node.h.

friend class Stream
friend

Definition at line 768 of file node.h.

friend class EventGate
friend

Definition at line 945 of file node.h.

Member Data Documentation

Definition at line 943 of file node.h.

DECLARE_CLASS

Definition at line 966 of file node.h.


The documentation for this class was generated from the following file: