AbcImport/PointHelper.cpp
         
    
#include "util.h"
#include "PointHelper.h"
#include "NodeIteratorVisitorHelper.h"
#include <maya/MString.h>
#include <maya/MPoint.h>
#include <maya/MPointArray.h>
#include <maya/MVector.h>
#include <maya/MGlobal.h>
#include <maya/MVectorArray.h>
#include <maya/MFnParticleSystem.h>
MStatus read(
double iFrame, 
const Alembic::AbcGeom::IPoints & iNode,
 
{
    printWarning("Reading animated particle data not supported.");
    return status;
}
MStatus create(
double iFrame, 
const Alembic::AbcGeom::IPoints & iNode,
 
{
    Alembic::AbcGeom::IPointsSchema schema = iNode.getSchema();
    
    if (schema.getNumSamples() == 0)
    {
        return status;
    }
    Alembic::AbcGeom::IPointsSchema::Sample samp;
    Alembic::AbcCoreAbstract::index_t index =
        schema.getTimeSampling()->getNearIndex(
            iFrame, schema.getNumSamples()).first;
    schema.get(samp, index);
    size_t pSize = samp.getPositions()->size();
    
    if (pSize == 0)
    {
        return status;
    }
    
    iObject = fnParticle.
create(iParent, &status);
    fnParticle.
setName(iNode.getName().c_str());
    Alembic::Abc::P3fArraySamplePtr v3ptr = samp.getPositions();
    for (unsigned int pId = 0; pId < pSize; pId++)
    {
        pArray.
append((*v3ptr)[pId].x,
                      (*v3ptr)[pId].y,
                      (*v3ptr)[pId].z);
    }
    status = fnParticle.
emit(pArray);
    return status;
}