MeshChange Class Reference

#include <mesh.h>

Class Description

This class represents a change to a mesh, and is used when an operation which modifies mesh vertices should be undoable.

When you want to change the position of vertices in a mesh, and you want this change to be undoable, you should first call the function Mesh::StartChange to create a MeshChange object.

Definition at line 1475 of file mesh.h.

+ Inheritance diagram for MeshChange:

Public Types

typedef StoredVertexInfo VertexChange
 This struct holds the change information about a single vertex. More...
 
- Public Types inherited from Node
enum  DiagnosticLevel { dgnLevel1, dgnLevel2, dgnLevel3 }
 Indicates the level of validity checking that is performed in CheckValidity() More...
 

Public Member Functions

float Data (unsigned int iVertexIndex) const
 Returns the float data value stored in the vertex change. More...
 
const VectorOriginalPosition (unsigned int iVertexIndex) const
 This function returns the position of a vertex before this change. More...
 
__forceinline Vector OriginalNormal (unsigned int iVertexIndex) const __attribute__((always_inline))
 This function returns the surface normal before the change for a specified vertex. More...
 
__forceinline VertexChangeAdd (unsigned int iVertexIndex, unsigned int iFaceIndex, bool bPrecalculateLayerIndex=false, float fDataInitialValue=0.0f) __attribute__((always_inline))
 Register a vertex for the change, and returns the corresponding VertexChange structure. More...
 
void Finish (bool bUndo=true, bool bMerge=false)
 This function must be called when no more vertices will be changed within the operation. More...
 
- Public Member Functions inherited from Node
 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
 
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...
 
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...
 
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...
 

Friends

class Mesh
 
class ::XMesh
 

Additional Inherited Members

- Static Public Member Functions inherited from Node
static void StartHashing ()
 This is called once in main once static ctors are done. More...
 
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...
 
- Public Attributes inherited from Node
AttributeThisPointer m_pThis
 
 DECLARE_CLASS
 

Member Typedef Documentation

This struct holds the change information about a single vertex.

Definition at line 1481 of file mesh.h.

Member Function Documentation

float Data ( unsigned int  iVertexIndex) const
inline

Returns the float data value stored in the vertex change.

Parameters
[in]iVertexIndexIndex of the vertex

Definition at line 1484 of file mesh.h.

1487  {
1488  Vertex &v = m_pMesh->VertexData( iVertexIndex );
1489  if ( v.m_iStrokeID < m_iVertexCount && m_pArray[v.m_iStrokeID].m_iVertexIndex == iVertexIndex )
1490  return m_pArray[v.m_iStrokeID].m_fData;
1491  else
1492  return 0.0f;
1493  };
const GLdouble * v
Definition: GLee.h:1174
const Vertex & VertexData(unsigned int iVertexIndex) const
Returns a vertex.
Definition: mesh.h:524
const Vector& OriginalPosition ( unsigned int  iVertexIndex) const
inline

This function returns the position of a vertex before this change.

Parameters
[in]iVertexIndexIndex of the vertex

Definition at line 1496 of file mesh.h.

1499  {
1500  Vertex &v = m_pMesh->VertexData( iVertexIndex );
1501  if ( v.m_iStrokeID < m_iVertexCount && m_pArray[v.m_iStrokeID].m_iVertexIndex == iVertexIndex )
1502  return m_pArray[v.m_iStrokeID].m_vPosition;
1503  else
1504  return v.m_vPos;
1505  };
const GLdouble * v
Definition: GLee.h:1174
const Vertex & VertexData(unsigned int iVertexIndex) const
Returns a vertex.
Definition: mesh.h:524
__forceinline Vector OriginalNormal ( unsigned int  iVertexIndex) const
inline

This function returns the surface normal before the change for a specified vertex.

Parameters
[in]iVertexIndexIndex of the vertex

Definition at line 1508 of file mesh.h.

1511  {
1512  Vertex &v = m_pMesh->VertexData( iVertexIndex );
1513  if ( v.m_iStrokeID < m_iVertexCount && m_pArray[v.m_iStrokeID].m_iVertexIndex == iVertexIndex )
1514  return m_pArray[v.m_iStrokeID].m_vNormal;
1515  else
1516  //return v.m_vNormal;
1517  return m_pMesh->VertexNormal(iVertexIndex);
1518  };
Vector VertexNormal(unsigned int iVertexIndex) const
Returns the normal of the vertex with the given index.
Definition: mesh.h:556
const GLdouble * v
Definition: GLee.h:1174
const Vertex & VertexData(unsigned int iVertexIndex) const
Returns a vertex.
Definition: mesh.h:524
__forceinline VertexChange& Add ( unsigned int  iVertexIndex,
unsigned int  iFaceIndex,
bool  bPrecalculateLayerIndex = false,
float  fDataInitialValue = 0.0f 
)
inline

Register a vertex for the change, and returns the corresponding VertexChange structure.

This function must be called before modifying the position of a vertex.

Parameters
[in]iVertexIndexIndex of the vertex
[in]iFaceIndexIndex of any face which uses the vertex
[in]bPrecalculateLayerIndexWhen this parameter is true, the function will
fDataInitialValueprecalculate the layer index of the vertex. [in] If the VertexChange has to be created, the initial value of the m_fData bember can be set here.

Definition at line 1534 of file mesh.h.

1541  {
1542  Vertex &v = m_pMesh->VertexData( iVertexIndex );
1543  if ( v.m_iStrokeID < m_iVertexCount &&
1544  m_pArray[v.m_iStrokeID].m_iVertexIndex == iVertexIndex )
1545  return m_pArray[v.m_iStrokeID]; // 80% of the time it hits this...
1546  else {
1547  return Add_uncached(iVertexIndex, iFaceIndex, v, bPrecalculateLayerIndex, fDataInitialValue );
1548  }
1549  };
const GLdouble * v
Definition: GLee.h:1174
const Vertex & VertexData(unsigned int iVertexIndex) const
Returns a vertex.
Definition: mesh.h:524
void Finish ( bool  bUndo = true,
bool  bMerge = false 
)

This function must be called when no more vertices will be changed within the operation.

Parameters
[in]bUndoWhen this parameter is true, the changes made to the vertex positions are automatically stored
bMergein the undo buffer, and becomes undoable [in] If this is true the undo operation is merged into the previous one causing one single undo

Friends And Related Function Documentation

friend class Mesh
friend

Definition at line 1564 of file mesh.h.

friend class ::XMesh
friend

Definition at line 1565 of file mesh.h.


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