apiMeshIterator.cpp

//-
// ==========================================================================
// Copyright 1995,2006,2008 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();
}

/* 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 ) {
                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 ) {
                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;
}


Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. Generated with doxygen 1.5.6