MNMesh Component Flags

MNMesh Component Flags
+ This reference page is linked to from the following overview topics:

Module description

General MNMesh Component Flags

For MNVerts, MNEdges, and MNFaces, bits 0-7 are used for common characteristics of all components.

Bits 8-15 are used for component-specific flags. Bits 16-23 are reserved for temporary use in MNMesh algorithms. Bits 24-31 are reserved for MNMath.lib users.

#define MN_SEL   (1<<0)
 Indicates that a component is selected. More...
 
#define MN_DEAD   (1<<1)
 Indicates that a component is not used and should be ignored. More...
 
#define MN_TARG   (1<<2)
 Indicates that a component is targeted. More...
 
#define MN_BACKFACING   (1<<3)
 Indicates that the vertex faces "backwards" in the current viewport. More...
 
#define MN_HIDDEN   (1<<4)
 
#define MN_CACHEINVALID   (1<<5)
 
#define MN_INFOREGROUND   (1<<7)
 Tags a face as not renderable but can be hit-test. More...
 
#define MN_WHATEVER   (1<<16)
 
#define MN_LOCAL_SEL   (1<<17)
 Alternate selections (not passed up the pipe). More...
 
#define MN_HITTEST_CULLED   (1<<18)
 Used to indicate culled components (neither selected nor not selected) in window-region hit testing. More...
 
#define MN_USER   (1<<24)
 Any value above this can be used by applications. More...
 

Vertex Flags

#define MN_VERT_DONE   (1<<8)
 Set in algorithms that may accidentally revisit the same vertex (MNVertext twice, to keep them from processing it the second time. More...
 
#define MN_VERT_WELDED   (1<<9)
 Used by MNMesh::WeldBorderVerts() More...
 
#define MN_VERT_SUBDIVISION_CORNER   (1<<10)
 Track which vertices are direct "descendants" of the original cage vertices in subdivision. More...
 

Edge flags

#define MN_EDGE_INVIS   (1<<8)
 Both faces using this edge consider it invisible. More...
 
#define MN_EDGE_NOCROSS   (1<<9)
 This edge should not be crossed in algorithms like MNMesh::SabinDoo that can mix faces across edges. More...
 
#define MN_EDGE_MAP_SEAM   (1<<10)
 Track which edges are direct descendants of the original cage edges in subdivision. More...
 
#define MN_EDGE_SUBDIVISION_BOUNDARY   (1<<11)
 Track unwanted edges created by Cut, so they might be removed later. More...
 
#define MN_EDGE_CUT_EXTRA   (1<<12)
 Used with MNMesh::CutPrepare() and MNMEsh::CutCleanUp() More...
 

Macro Definition Documentation

#define MN_SEL   (1<<0)

Indicates that a component is selected.

#define MN_DEAD   (1<<1)

Indicates that a component is not used and should be ignored.

Vertices with the MN_DEAD flag are deleted in the next call MNMesh::CollapseDeadVerts().

#define MN_TARG   (1<<2)

Indicates that a component is targeted.

(See the MNMesh methods starting with the words TargetBy.

#define MN_BACKFACING   (1<<3)

Indicates that the vertex faces "backwards" in the current viewport.

This changes often.

#define MN_HIDDEN   (1<<4)
#define MN_CACHEINVALID   (1<<5)
#define MN_INFOREGROUND   (1<<7)

Tags a face as not renderable but can be hit-test.

1<<6 is skipped because the tri strip uses that as face flag signifying a face to be stripped

#define MN_WHATEVER   (1<<16)

SDK users should use MN_USER and higher flags.

#define MN_LOCAL_SEL   (1<<17)

Alternate selections (not passed up the pipe).

#define MN_HITTEST_CULLED   (1<<18)

Used to indicate culled components (neither selected nor not selected) in window-region hit testing.

#define MN_USER   (1<<24)

Any value above this can be used by applications.

#define MN_VERT_DONE   (1<<8)

Set in algorithms that may accidentally revisit the same vertex (MNVertext twice, to keep them from processing it the second time.

#define MN_VERT_WELDED   (1<<9)
#define MN_VERT_SUBDIVISION_CORNER   (1<<10)

Track which vertices are direct "descendants" of the original cage vertices in subdivision.

#define MN_EDGE_INVIS   (1<<8)

Both faces using this edge consider it invisible.

#define MN_EDGE_NOCROSS   (1<<9)

This edge should not be crossed in algorithms like MNMesh::SabinDoo that can mix faces across edges.

#define MN_EDGE_MAP_SEAM   (1<<10)

Track which edges are direct descendants of the original cage edges in subdivision.

#define MN_EDGE_SUBDIVISION_BOUNDARY   (1<<11)

Track unwanted edges created by Cut, so they might be removed later.

#define MN_EDGE_CUT_EXTRA   (1<<12)

Used with MNMesh::CutPrepare() and MNMEsh::CutCleanUp()