#ifndef ABCIMPORT_ALEMBIC_NODE_H_
#define ABCIMPORT_ALEMBIC_NODE_H_
#include "NodeIteratorVisitorHelper.h"
#include <maya/MDataHandle.h>
#include <maya/MDGContext.h>
#include <maya/MPlug.h>
#include <maya/MPlugArray.h>
#include <maya/MPxNode.h>
#include <maya/MStatus.h>
#include <maya/MString.h>
#include <set>
#include <vector>
#include <string>
{
public:
AlembicNode() : mFileInitialized(0), mDebugOn(false)
{
mCurTime = DBL_MAX;
mOutRead = std::vector<bool>(9, false);
}
~AlembicNode() override {}
void setReaderPtrList(const WriterData & iData)
{
mData = iData;
}
static MObject mAbcLayerFileNamesAttr;
static MObject mOutCameraArrayAttr;
static MObject mOutNurbsCurveGrpArrayAttr;
static MObject mOutNurbsSurfaceArrayAttr;
static MObject mOutTransOpArrayAttr;
static MObject mOutLocatorPosScaleArrayAttr;
static void* creator() { return (new AlembicNode()); }
bool unresolvedName,
bool markCouldBeImageSequence) const override;
void setDebugMode(bool iDebugOn){ mDebugOn = iDebugOn; }
void setIncludeFilterString(
const MString & iIncludeFilterString)
{
mIncludeFilterString = iIncludeFilterString;
}
void setExcludeFilterString(
const MString & iExcludeFilterString)
{
mExcludeFilterString = iExcludeFilterString;
}
private:
double computeAdjustedTime(const double inputTime,
const double speed,
const double timeOffset);
enum
{
PLAYTYPE_HOLD = 0,
PLAYTYPE_LOOP,
PLAYTYPE_REVERSE,
PLAYTYPE_BOUNCE
};
double computeRetime(const double inputTime,
const double firstTime,
const double lastTime,
const short playStyle);
double getFPS();
bool mFileInitialized;
bool mSubDInitialized;
bool mPolyInitialized;
double mSequenceStartTime;
double mSequenceEndTime;
double mCurTime;
bool mDebugOn;
std::vector<bool> mOutRead;
bool mConnect;
bool mCreateIfNotFound;
bool mRemoveIfNoUpdate;
WriterData mData;
};
#endif // ABCIMPORT_ALEMBIC_NODE_H_