// ==========================================================================
// 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.
// ==========================================================================

// Provides a data type for some arbitrary user geometry.
// A users geometry class can exist in the DAG by creating an
// MPxSurfaceShape (and UI) class for it and can also be passed through
// DG connections by creating an MPxGeometryData class for it.
// MPxGeometryData is the same as MPxData except it provides 
// additional methods to modify the geometry data via an iterator.

#ifndef _apiMeshData
#define _apiMeshData

#include <maya/MPxGeometryData.h>
#include <maya/MTypeId.h>
#include <maya/MString.h>
#include <apiMeshGeom.h>

class apiMeshData : public MPxGeometryData
        // Overrides from MPxData

        virtual ~apiMeshData();

        virtual MStatus                 readASCII( const MArgList& argList, unsigned& idx );
        virtual MStatus                 readBinary( istream& in, unsigned length );
        virtual MStatus                 writeASCII( ostream& out );
        virtual MStatus                 writeBinary( ostream& out );

        virtual void                    copy ( const MPxData& );

        virtual MTypeId         typeId() const;
        virtual MString         name() const;

        // Overrides from MPxGeometryData

        virtual MPxGeometryIterator* iterator( MObjectArray & componentList,
                                                                                        MObject & component,
                                                                                        bool useComponents);
        virtual MPxGeometryIterator* iterator( MObjectArray & componentList,
                                                                                        MObject & component,
                                                                                        bool useComponents,
                                                                                        bool world) const;

        virtual bool    updateCompleteVertexGroup( MObject & component ) const;

        // Helper methods

        MStatus                                 readVerticesASCII( const MArgList&, unsigned& );
        MStatus                                 readNormalsASCII( const MArgList&, unsigned& );
        MStatus                                 readFacesASCII( const MArgList&, unsigned& );
        MStatus                             readUVASCII( const MArgList&, unsigned& ); 

        MStatus                                 writeVerticesASCII( ostream& out );
        MStatus                                 writeNormalsASCII( ostream& out );
        MStatus                                 writeFacesASCII( ostream& out );
        MStatus                                 writeUVASCII( ostream& out ); 

        static void * creator();

        static const MString typeName;
        static const MTypeId id;

        // This is the geometry our data will pass though the DG
        apiMeshGeom* fGeometry;

#endif /* apimeshData */

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