-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathapiMeshIterator.cpp
More file actions
113 lines (101 loc) · 2.55 KB
/
apiMeshIterator.cpp
File metadata and controls
113 lines (101 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//-
// ==========================================================================
// Copyright 2015 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk
// license agreement provided at the time of installation or download,
// or which otherwise accompanies this software in either electronic
// or hard copy form.
// ==========================================================================
//+
///////////////////////////////////////////////////////////////////////////////
//
// apiMeshIterator.cpp
//
///////////////////////////////////////////////////////////////////////////////
#include "apiMeshIterator.h"
#include <maya/MIOStream.h>
apiMeshGeomIterator::apiMeshGeomIterator( void * geom, MObjectArray & comps )
: MPxGeometryIterator( geom, comps ),
geometry( (apiMeshGeom*)geom )
{
reset();
}
apiMeshGeomIterator::apiMeshGeomIterator( void * geom, MObject & comps )
: MPxGeometryIterator( geom, comps ),
geometry( (apiMeshGeom*)geom )
{
reset();
}
apiMeshGeomIterator::~apiMeshGeomIterator(){}
/* override */
void apiMeshGeomIterator::reset()
//
// Description
//
//
// Resets the iterator to the start of the components so that another
// pass over them may be made.
//
{
MPxGeometryIterator::reset();
setCurrentPoint( 0 );
if ( NULL != geometry ) {
int maxVertex = geometry->vertices.length();
setMaxPoints( maxVertex );
}
}
/* override */
MPoint apiMeshGeomIterator::point() const
//
// Description
//
// Returns the point for the current element in the iteration.
// This is used by the transform tools for positioning the
// manipulator in component mode. It is also used by deformers.
//
{
MPoint pnt;
if ( NULL != geometry ) {
unsigned int idx = index();
if ( idx < geometry->vertices.length())
pnt = geometry->vertices[ index() ];
}
return pnt;
}
/* override */
void apiMeshGeomIterator::setPoint( const MPoint & pnt ) const
//
// Description
//
// Set the point for the current element in the iteration.
// This is used by deformers.
//
{
if ( NULL != geometry ) {
unsigned int idx = index();
if ( idx < geometry->vertices.length())
geometry->vertices.set( pnt, index() );
}
}
/* override */
int apiMeshGeomIterator::iteratorCount() const
{
//
// Description
//
// Return the number of vertices in the iteration.
// This is used by deformers such as smooth skinning
//
return geometry->vertices.length();
}
/* override */
bool apiMeshGeomIterator::hasPoints() const
//
// Description
//
// Returns true since the shape data has points.
//
{
return true;
}